首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >仅忽略json中的字段,而不忽略具有json-dataformat- xml的xml

仅忽略json中的字段,而不忽略具有json-dataformat- xml的xml
EN

Stack Overflow用户
提问于 2014-04-07 11:45:18
回答 1查看 2.8K关注 0票数 2

使用带有jackson-dataformat-xml模块的Jackson,我能够将POJO序列化为JSONXML。我的对象中有几个字段(xml属性)只应该序列化为XML,而不应该序列化为JSON。如果我应用@JsonIgnore注释,即使使用@JsonXMLProperty,该字段也会被完全忽略。

如何只忽略JSON中的字段而不忽略XML中的字段

EN

回答 1

Stack Overflow用户

发布于 2014-04-07 16:08:12

您应该使用Mix-in功能。例如,假设您的POJO类如下所示:

代码语言:javascript
复制
class Pojo {

    private long id;
    private String xmlOnlyProperty;

    // getters, setters
}

现在,您可以使用Mix-in接口为每个属性定义注释。对于JSON,它看起来如下所示:

代码语言:javascript
复制
interface PojoJsonMixIn {

    @JsonIgnore
    String getXmlOnlyProperty();
}

对于XML,它看起来如下所示:

代码语言:javascript
复制
interface PojoXmlMixIn {

    @JacksonXmlProperty(isAttribute = true)
    String getXmlOnlyProperty();
}

最后,举例说明如何使用Mix-in功能:

代码语言:javascript
复制
Pojo pojo = new Pojo();
pojo.setId(12);
pojo.setXmlOnlyProperty("XML attribute");

System.out.println("JSON");
ObjectMapper mapper = new ObjectMapper();
mapper.addMixInAnnotations(Pojo.class, PojoJsonMixIn.class);
System.out.println(mapper.writerWithDefaultPrettyPrinter().writeValueAsString(pojo));

System.out.println("XML");
ObjectMapper xmlMapper = new XmlMapper();
xmlMapper.addMixInAnnotations(Pojo.class, PojoXmlMixIn.class);
System.out.println(xmlMapper.writeValueAsString(pojo));

上面的程序打印:

代码语言:javascript
复制
JSON
{
  "id" : 12
}
XML
<Pojo xmlns="" xmlOnlyProperty="XML attribute"><id>12</id></Pojo>
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22903258

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档