2011-01-18 19 views
3

JAXBを使用してリストを含むJSONのルート要素を整列化/非整列化するにはどうすればよいですか?jaxbを使用してリストをルート要素として表現

だから、

{ 
    "tag" : [ 
     { 
      "id" : "a", 
      "id2": "aa" 
     }, 
     { 
      "id" : "b", 
      "id2" : "bb" 
     }, 
     { 
      "id" : "c", 
      "id2" : "cc" 
     } 
    ] 
} 

ように私は、投棄によるJSONをサポートしてApacheのCXFをJSONを使用しています。

Javaクラスは次のようになります。リストにはXmlListアノテーションを使用し、ルート要素にはそのリストを持つためにXmlValueを使用できます。問題は、XmlValueはユーザー定義の型を取らないということです。

@XmlRootElement(name = "tag") 
public class test 
{ 
    @XmlList 
    @XmlValue 
    private List<UserDefinedType> testList; 
} 

これを回避する方法はありますか?私は、着信JSONを非マーシャリングするためにこれを動作させる必要があります。ここからこのアイデアを得ました http://bdoughan.blogspot.com/2010/09/jaxb-collection-properties.html

+0

なぜJAXBを使用してJSONをシリアル化しようとしていますか? JAXBはXMLバインディング専用です...柔軟なバインディングを持つ汎用データモデリングフレームワークではありません。 –

+0

JSONにもJAXBが使用されています。 http://blogs.sun.com/arungupta/entry/totd_8_generating_json_usingここをクリックhttp://jettison.codehaus.org/ – Hardy

+0

いくつかのツールはJAXBアノテーション付きクラスをJSON(例:ジャクソン、ジェットソンなど)にマーシャリングできますが、これは非常に非標準的であり、ツールに依存します。 JettisonをXStreamで使用していますか? – skaffman

答えて

2

これは、あなたが言及したJSON形式で動作するはずです。ただし、特定のXML形式にマーシャリング/アンマーシャリングする場合は、機能しない可能性があります。

@XmlRootElement 
public class Test { 
    @XmlElement(name = "tag") 
    private List<UserDefinedType> testList; 
} 

public class UserDefinedType { 
    @XmlElement(name = "id") 
    private String someId; 

    @XmlElement(name = "id2") 
    private String someId2; 
} 
関連する問題