0

シリアライズされた HashMap を返すことについて多くの質問がありますが、あまり良い答えが見つかりませんでした。

ここで、次のような残りのサービスを簡単に作成したいと思います。

@XmlElement(name = "Calibration")
private HashMap<String, Double> entry = new HashMap<String, Double>();

次に、REST サービスで:

@GET
@Produces(MediaType.APPLICATION_JSON)
@Path("/entry")
public HashMap<String, Double> current() {
    System.out.println("calibration request");
    entry.put("test", 3.00);
    return entry;
}

サービスが呼び出されると、javax.ws.rs.WebApplicationException がスローされます。

com.sun.jersey.api.MessageException: Java クラス java.util.HashMap、Java タイプ java.util.HashMap、および MIME メディア タイプ application/json のメッセージ本文ライターが見つかりませんでした。

役に立つ場合に備えて、私のpom.xml:

<dependency>
        <groupId>com.sun.grizzly</groupId>
        <artifactId>grizzly-servlet-webserver</artifactId>
        <version>1.9.18-i</version>
    </dependency>
    <dependency>
        <groupId>com.sun.grizzly</groupId>
        <artifactId>grizzly-comet-webserver</artifactId>
        <version>1.9.46</version>
    </dependency>
    <dependency>
        <groupId>com.sun.jersey</groupId>
        <artifactId>jersey-grizzly</artifactId>
        <version>1.9.1</version>
    </dependency>
    <dependency>
        <groupId>com.sun.jersey</groupId>
        <artifactId>jersey-json</artifactId>
        <version>1.9.1</version>
    </dependency>

Grizzly を webContainer として使用しています。

4

2 に答える 2

1

ここでは、Jackson がおそらく最も簡単な選択です (Jersey JSON モジュールには、Jackson のサポートが組み込まれています)。POJO JSON サポートは、構成オブジェクトを介してweb.xml、または構成オブジェクトを介して構成できます ( POJO サポートを参照)。

注:最新の Jersey 1.x バージョンは 1.17.1 です。可能であれば、このバージョンの使用を検討してください。

于 2013-10-22T12:02:17.703 に答える