我的web服务使用Spring MVC在xml和json中都返回数据。对于json,Spring使用Jackson和XStream for XML。但是,XStream使用字段进行序列化,而Jackson使用方法(setter/getter)。使用getter进行序列化的XStream
我想在xml序列化中包含所有/某些getter。这如何通过自定义转换器或注释来完成?
我的web服务使用Spring MVC在xml和json中都返回数据。对于json,Spring使用Jackson和XStream for XML。但是,XStream使用字段进行序列化,而Jackson使用方法(setter/getter)。使用getter进行序列化的XStream
我想在xml序列化中包含所有/某些getter。这如何通过自定义转换器或注释来完成?
您需要注册一个自定义的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
如果您将这些字段公开,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)
感谢您提供代码示例。 – ltfishie 2013-04-02 05:38:20