2012-04-26 13 views
1

私は、JSONオブジェクトのこの種を返すWebサービスを持っている:ジャージーJSON Webサービスクライアントの実装

{ 

"dossiers": [ 
    { 
     "id": "2" 
    }, 
    { 
     "id": "3" 
    } 
] 
} 

だから私はジャージ-クライアント(V1.12)を使用してPOJOにこの答えをアンシリアライズしようとしています。 Dossier.java

public class DossierPOJO 
{ 
    private Long id; 

    public Long getId() 
    { 
     return id; 
    } 

    public void setId(Long id) 
    { 
     this.id = id; 
    } 
} 

とクライアントコード自体

DossiersPOJO.java

@XmlRootElement(name = "dossiers") 
public class DossiersPOJO 
{ 
    private List<DossierPOJO> dossiers; 

    public List<DossierPOJO> getDossiers() 
    { 
     return dossiers; 
    } 

    public void setDossiers(List<DossierPOJO> dossiers) 
    { 
     this.dossiers = dossiers; 
    } 
} 

だからここ

は私の現在のコードです

しかし、私は、私は、このエラー・スタックゲット呼び出すとき:

log4j:WARN No appenders could be found for logger (org.springframework.core.env.StandardEnvironment). 
log4j:WARN Please initialize the log4j system properly. 
26 avr. 2012 17:18:03 com.sun.jersey.api.client.ClientResponse getEntity 
GRAVE: A message body reader for Java class fr.paris.lutece.batches.ramen.bean.DossiersPOJO, and Java type class fr.paris.lutece.batches.ramen.bean.DossiersPOJO, and MIME media type application/json was not found 
26 avr. 2012 17:18:03 com.sun.jersey.api.client.ClientResponse getEntity 
GRAVE: The registered message body readers compatible with the MIME media type are: 
*/* -> 
    com.sun.jersey.core.impl.provider.entity.FormProvider 
    com.sun.jersey.core.impl.provider.entity.MimeMultipartProvider 
    com.sun.jersey.core.impl.provider.entity.StringProvider 
    com.sun.jersey.core.impl.provider.entity.ByteArrayProvider 
    com.sun.jersey.core.impl.provider.entity.FileProvider 
    com.sun.jersey.core.impl.provider.entity.InputStreamProvider 
    com.sun.jersey.core.impl.provider.entity.DataSourceProvider 
    com.sun.jersey.core.impl.provider.entity.XMLJAXBElementProvider$General 
    com.sun.jersey.core.impl.provider.entity.ReaderProvider 
    com.sun.jersey.core.impl.provider.entity.DocumentProvider 
    com.sun.jersey.core.impl.provider.entity.SourceProvider$StreamSourceReader 
    com.sun.jersey.core.impl.provider.entity.SourceProvider$SAXSourceReader 
    com.sun.jersey.core.impl.provider.entity.SourceProvider$DOMSourceReader 
    com.sun.jersey.core.impl.provider.entity.XMLRootElementProvider$General 
    com.sun.jersey.core.impl.provider.entity.XMLListElementProvider$General 
    com.sun.jersey.core.impl.provider.entity.XMLRootObjectProvider$General 
    com.sun.jersey.core.impl.provider.entity.EntityHolderReader 

を、問題がどこから来た私は私のクライアントのPOJOは、サーバ側1と全く似ています知っているので、私は把握することはできません。

答えて

1

実際、思ったよりも簡単でした! 初めてで、私のpom.xmlは、唯一の依存関係が含まれます。

<dependency> 
    <groupId>com.sun.jersey</groupId> 
    <artifactId>jersey-client</artifactId> 
    <version>1.12</version> 
</dependency> 

をそして私は、変換をオブジェクトへのJSONは別の依存必要があることが分かった:

<dependency> 
    <groupId>com.sun.jersey</groupId> 
    <artifactId>jersey-json</artifactId> 
    <version>1.12</version> 
</dependency> 

そしてそれは、この依存関係を追加することがenoughtであることを今私のプロジェクトはjsonの応答を処理してpojoオブジェクトに変換することができます。

0

は、次のことを試してください。

List<DossierPOJO> dossierJson = accept.get(new GenericType<List<DossierPOJO>>() {}); 

あなたはジェネリックを使用するためにGenericType抽象化を使用しshoud。

UPD。このようにすれば、DossierPOJOクラスにJAXBアノテーションを追加する必要があります。

+0

実際には、jsonレスポンスはオブジェクトの配列ではなく、値としてキー「書類」と配列を含むオブジェクトです。だから私のDossiersPOJOはOKです。 –

+0

まあ、私は手動でそれをチェックする機会がなかったし、確かにあなたの依存関係管理については考えていなかった:) –

関連する問題