2013-02-22 85 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