2013-02-22 89 views
3

我的web服務使用Spring MVC在xml和json中都返回數據。對於json,Spring使用Jackson和XStream for XML。但是,XStream使用字段進行序列化,而Jackson使用方法(setter/getter)。使用getter進行序列化的XStream

我想在xml序列化中包含所有/某些getter。這如何通過自定義轉換器或註釋來完成?

回答

4

您需要註冊一個自定義的JavaBeanConverter,看看這裏的單元測試:https://fisheye.codehaus.org/browse/xstream/tags/XSTREAM_1_1_3/xstream/src/test/com/thoughtworks/xstream/converters/javabean/JavaBeanConverterTest.java?r=554

XStream xstream = new XStream(); 
xstream.registerConverter(new JavaBeanConverter(xstream.getClassMapper(), "class"), -20); 

幸得原線程在:http://xstream.10960.n7.nabble.com/How-to-use-public-accessor-instead-of-field-td1193.html

+0

感謝您提供代碼示例。 – ltfishie 2013-04-02 05:38:20

1

如果您將這些字段公開,Jackson可以使用它們而不是getter/setter方法。還有一個註解@JsonProperty來引起這個。

public class KeyValuePair { 

    @JsonProperty 
    private int value; 
    @JsonProperty 
    private String key; 
} 

或者看看這裏how to specify jackson to only use fields - preferably globally明白:

@JsonAutoDetect(fieldVisibility = Visibility.ANY, getterVisibility = Visibility.NONE, setterVisibility = Visibility.NONE) 
+0

謝謝,你能不能te請問我有哪些註釋?我一直在尋找它並找不到任何東西。 – ltfishie 2013-02-22 19:20:38

+0

我正在尋找XStream XML註釋。對不起,如果問題不明確。 – ltfishie 2013-02-22 19:32:07