0

次の JSON を生成するジャージー Web サービスがあります。

{"ConfigData":[{"@name":"Admin Component Version","@value":"version 1","@type":"String"},{"@name":"Component Version","@value":"version 1","@type":"String"}]}

この JAX-B オブジェクトから:

@XmlRootElement(name = "ConfigData")
public class ConfigData {

    @XmlAttribute(name = "name", required = true)
    String name;

    @XmlAttribute(name = "value", required = true)
    String value;

    @XmlAttribute(name = "type", required = true)
    String type;

    @XmlAttribute(name = "groupId", required = false)
    String groupId;
    [...]
}

以下を使用して単体テストを実行しています。

    final WebResource webResource = resource();
    final ClientResponse response = webResource.path(
            VersionProviderTest.SERVICE_PATH).get(ClientResponse.class);
    String jsonResponse = response.getEntity(String.class);

    ObjectMapper mapper = new ObjectMapper();
    //Exception is thrown at the line below obviously
    ConfigData[] list = mapper.readValue(jsonResponse.getBytes(),ConfigData[].class);

この例外がスローされるのはなぜですか? 私は何が欠けていますか?これは、Jackson をこのように Marshall および UnMarchall クラスに使用する最初の試みです。まるですべてがそこにあるようです...

ありがとう、

4

1 に答える 1

0

Jackson を完全にスキップして、Jersey から直接出力を取得してみませんか。デフォルトでは、明らかに同じ Json 形式を使用していません。

    final WebResource webResource = resource();
    final ClientResponse response = webResource.path(
            VersionProviderTest.SERVICE_PATH).get(ClientResponse.class);
    ConfigData[] list = response.getEntity(ConfigData[].class);

これは魅力のように機能します!

于 2013-05-16T17:41:32.353 に答える