XStream使用getter进行序列化

时间:2013-02-22 19:14:49

标签: java xml spring xstream

我的Web服务使用Spring MVC在xml和json中返回数据。对于json,spring使用Jackson和XStream for XML。但是,XStream使用字段进行序列化,而Jackson使用方法(setter / getter)。

我想在xml序列化中包含所有/一些getter。如何通过自定义转换器或注释实现这一目标?

2 个答案:

答案 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)