【问题标题】:XStream to use getter for serializationXStream 使用 getter 进行序列化
【发布时间】:2013-02-08 12:11:06
【问题描述】:

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

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

【问题讨论】:

    标签: java xml spring xstream


    【解决方案1】:

    你需要注册一个自定义的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

    【讨论】:

      【解决方案2】:

      如果您公开这些字段,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)
      

      【讨论】:

      • 谢谢,你能告诉我是哪个注释吗?我一直在寻找它,但找不到任何东西。
      • 我在寻找 XStream XML 注释。抱歉,如果问题不清楚。
      猜你喜欢
      • 1970-01-01
      • 2012-11-18
      • 2013-07-02
      • 2014-10-25
      • 1970-01-01
      • 2023-04-06
      • 1970-01-01
      • 2010-12-17
      • 2015-04-13
      相关资源
      最近更新 更多