4

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

我想在 xml 序列化中包含所有/一些吸气剂。这如何通过自定义转换器或注释来完成?

4

2 回答 2

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

于 2013-03-27T01:00:17.070 回答
1

如果您公开这些字段,Jackson 可以使用它们而不是 getter/setter 方法。还有一个注释 @JsonProperty 会导致这种情况。

public class KeyValuePair {

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

或者看这里如何指定杰克逊只使用字段 - 最好是全局理解:

 @JsonAutoDetect(fieldVisibility = Visibility.ANY, getterVisibility = Visibility.NONE, setterVisibility = Visibility.NONE)
于 2013-02-22T19:19:59.947 回答