使用带有jackson-dataformat-xml模块的Jackson,我能够将POJO序列化为JSON和XML。我的对象中有几个字段(xml属性)只应该序列化为XML,而不应该序列化为JSON。如果我应用@JsonIgnore注释,即使使用@JsonXMLProperty,该字段也会被完全忽略。
如何只忽略JSON中的字段而不忽略XML中的字段
发布于 2014-04-07 16:08:12
您应该使用Mix-in功能。例如,假设您的POJO类如下所示:
class Pojo {
private long id;
private String xmlOnlyProperty;
// getters, setters
}现在,您可以使用Mix-in接口为每个属性定义注释。对于JSON,它看起来如下所示:
interface PojoJsonMixIn {
@JsonIgnore
String getXmlOnlyProperty();
}对于XML,它看起来如下所示:
interface PojoXmlMixIn {
@JacksonXmlProperty(isAttribute = true)
String getXmlOnlyProperty();
}最后,举例说明如何使用Mix-in功能:
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));上面的程序打印:
JSON
{
"id" : 12
}
XML
<Pojo xmlns="" xmlOnlyProperty="XML attribute"><id>12</id></Pojo>https://stackoverflow.com/questions/22903258
复制相似问题