我的 Web 服务使用 Spring MVC 以 xml 和 json 格式返回数据。对于 json,spring 对 XML 使用 Jackson 和 XStream。但是,XStream 使用字段进行序列化,而 Jackson 使用方法(setter/getter)。
我想在 xml 序列化中包含所有/一些吸气剂。这如何通过自定义转换器或注释来完成?
您需要注册一个自定义 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;
}
或者看这里如何指定杰克逊只使用字段 - 最好是全局理解:
@JsonAutoDetect(fieldVisibility = Visibility.ANY, getterVisibility = Visibility.NONE, setterVisibility = Visibility.NONE)