0

REST 呼び出しを行い、MyClass オブジェクトのリストを含む json を取得したいと考えています。実際、私はこの例外を受け取ります:

javax.ws.rs.WebApplicationException: javax.xml.bind.UnmarshalException - リンクされた例外あり: [com.sun.istack.internal.SAXParseException2; 行番号: 0; 列番号: 5; 予期しない要素 (uri:""、local:"id")。期待される要素は <{}snowCannonDataEntity>] です

コード:

public List<'MyClass> getLIst()

{
ClientConfig config = new DefaultClientConfig();
config.getClasses().add(MyObjectMapper.class);
Client client = Client.create(config);
WebResource resource = client.resource(HOST_PATH).path(PATH).type(MediaType.APPLICATION_JSON_TYPE).accept(MediaType.APPLICATION_JSON_TYPE);
return resource.get(new GenericType<List<MyClass>>() {
    });
}


@XmlRootElement
public class MyClass
{ ... }
4

2 に答える 2

1

Paul Sandoz の提案によると、あなたのコードは実際に進むべき道です。

ただし、これが機能しない場合は、デフォルトの JAXB プロバイダではなく、Jackson JSON プロバイダを使用してください。これは私にとってはうまくいきました:

import org.codehaus.jackson.jaxrs;

ClientConfig config = new DefaultClientConfig();
config.getClasses().add(MyObjectMapper.class);
config.getClasses().add(JacksonJsonProvider.class);
Client client = Client.create(config);
于 2012-08-07T09:57:19.167 に答える
0

サーバーから返された json を何らかの理由で解析できませんでした。MyClass ソースと、サーバーからの json を表示する必要があります。List の代わりに String を要求することで、サーバーからの JSON を出力できます。

ClientConfig config = new DefaultClientConfig();
config.getClasses().add(MyObjectMapper.class);
Client client = Client.create(config);
WebResource resource = client.resource(HOST_PATH).path(PATH).accept(MediaType.APPLICATION_JSON_TYPE);
System.out.println(resource.get(String.class));
于 2012-06-29T09:10:01.443 に答える