我的Web服务使用Spring MVC在xml和json中返回数据。对于json,spring使用Jackson和XStream for XML。但是,XStream使用字段进行序列化,而Jackson使用方法(setter / getter)。
我想在xml序列化中包含所有/一些getter。如何通过自定义转换器或注释实现这一目标?
答案 0 :(得分: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
答案 1 :(得分: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)