2012-12-04 25 views
1

我們是否有任何註釋可以替代JSON的@xstreamImplicit,因爲XstreamImplicit只能用於XML?我們如何隱含在json中

例如:

Class A { 

    @XstreamImplicit 
    private List<Apple> apples; 
} 

XML:

<apple> 
    ..... 
    ..... 
</apple> 
<apple> 
    .... 
    .... 
</apple> 

JSON:

{ apples: [{...}] } 

欲JSON的以下列格式的所需的輸出:

[{...}] 

回答

0

"Write to JSON with the self-contained JSON driver dropping the root" in the JSON tutorial,你可以寫這樣的事情:

XStream xstream = new XStream(new JsonHierarchicalStreamDriver() { 
    public HierarchicalStreamWriter createWriter(Writer writer) { 
     return new JsonWriter(writer, JsonWriter.DROP_ROOT_MODE); 
    } 
}); 
+0

@ruack嘿謝謝哥們。 但我提到的A類對象不是根元素。 它在類C中有一個引用,它應該是根類。 類B { @XstreamAlias(「果」) 非公開A答: } – Style

+0

?我們有類似xstreamImplicit任何註釋,這將做丟棄標籤或關鍵的needfull:對JSON – Style

+0

@ user1065080:對於,我想你需要使用'JettisonMappedXmlDriver'(它序列化爲XML,然後轉換爲JSON;請參閱[它的Javadoc](http://xstream.codehaus.org/javadoc/com/thoughtworks/xstream/io/json/JettisonMappedXmlDriver .html))而不是'JsonHierarchicalStreamDriver'。 – ruakh

0

試着做一些像這樣的事情,

我不贊成這種方法工作得很好,而重新建立從取得的字符串對象這個。

Class A { 

    private List<Apple> apples; 
    public static void setXstreamAlias(XStream xstream) 
     xstream.alias("apples", List.class, Apple.class); 
     xstream.addImplicitArray(A.class, "apples"); 
    } 
} 

在對字符串進行序列化之前,應該調用此方法。

這樣,

A a = new A(); 
// setting some values to your apple here... 
. 
. 
. 

// finally 
XStream xstream; 
xstream = new XStream(new JettisonMappedXmlDriver()); 
xstream.setMode(XStream.NO_REFERENCES); 
A.setXstreamAlias(xstream); 
String output = xstream.toXML(a) ; 

我希望這有助於你,

但這是有一些問題, 通過這個鏈接:https://stackoverflow.com/questions/13966871/xstream-json-arraylist-handling-after-xstreamimplicit-the-arraylist-variable

Adnd正確如果我錯了,任何的以上的理解。謝謝。

相關問題