Using Jackson
与jackson-dataformat-xml
模块,我能够序列化POJO
二者皆是JSON
and XML
。我的对象中有一些字段(xml 属性)只能序列化为XML
但不是JSON
。如果我应用@JsonIgnore
注释,该字段被完全忽略,即使使用@JsonXMLProperty
.
我怎样才能只忽略字段JSON
但不是XML
?
你应该使用Mix-in特征。例如,假设您的POJO
类看起来像这样:
class Pojo {
private long id;
private String xmlOnlyProperty;
// getters, setters
}
现在,您可以使用以下命令为每个属性定义注释Mix-in
接口。为了JSON
它看起来如下:
interface PojoJsonMixIn {
@JsonIgnore
String getXmlOnlyProperty();
}
For 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>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)