2012-01-04 12 views
0

は、私はシンプルな豆は@XmlRootElementで注釈を付けガット:トラブルがあるjson/jacksonのシリアル化でリストルートを無視する方法はありますか?

@Component 
@Path("/myresource") 
public class MyResource { 

    @GET 
    @Produces(MediaType.APPLICATION_JSON) 
    public List<MyBean> getAll() { 
      //... 
      return list; 
    } 

    @GET 
    @Path("{id}") 
    @Produces(MediaType.APPLICATION_JSON) 
    public MyBean getById(@PathParam("id") long id) { 
     //... 
     return bean; 
    } 
} 

@XmlRootElement 
public class MyBean { 
    private String name; 

    public String getName() { 
     return name; 
    } 
    public void setName(String name) { 
     this.name = name; 
    } 
} 

私はこのBeanと、このBeanのリストを公開するシンプルなジャージのサービスを持っています私が希望何

{"myBean":[{"name":"Hello"},{"name":"Plop"}]} 

です(リストルート名なし)::私は豆のリストを取得する場合、私は次のJSONを持っていること

{[{"name":"Hello"},{"name":"Plop"}]} 

これを行う簡単な方法はありますか、注釈は見つかりませんでしたか?私はリストのラッパーを作成したくありません。ジャクソンの設定を変更する必要がありますか、またはマッパーを作成する必要がありますか?

ありがとうございました。

答えて

0

私の知る限りでは、あなたの代わりのArrayListの

MyBean[] 

を使用している場合、あなたは正確にあなたが欲しいものを得るでしょう!助け

希望、

オハッド

3

ご協力いただきありがとうございますしかし、私は、配列と同じ結果を持っていました。その代わりに

、私はMyBeanとのXmlRootElementが含ま注釈を削除し、サーブレット宣言にweb.xmlに以下を追加しました:

<init-param> 
     <param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name> 
     <param-value>true</param-value> 
    </init-param> 
+0

これは重要です - あなたはおそらくマッパー表記のいずれかを使用していました(badgerdfish/jettison、自然)、ラッパー要素を追加します。 @XmlRootElementはPOJOマッピングでは大丈夫ですが、何にも必要ではありません。 – StaxMan

+0

ジャージーは、リストと配列が関係していたところで、多くの時間を使いこなしました。 POJOマッピングはこれを修正する予定ですが、コードの調整が必要な場合があります。 –

関連する問題