Java 仅忽略json中的字段,而不忽略具有jackson dataformat xml的xml中的字段
使用Java 仅忽略json中的字段,而不忽略具有jackson dataformat xml的xml中的字段,java,json,jackson,json-serialization,jackson-modules,Java,Json,Jackson,Json Serialization,Jackson Modules,使用Jackson和Jackson数据格式xml模块,我能够将POJO序列化为JSON和xml。我的对象中有几个字段(xml属性)只应序列化为xml,而不应序列化为JSON。如果我应用@JsonIgnore注释,即使使用@JsonXMLProperty也会完全忽略该字段 我怎样才能只忽略JSON中的字段而不忽略XML?您应该使用该功能。例如,假设您的POJO类如下所示: 现在,您可以使用Mix-in接口为每个属性定义注释。对于JSON它如下所示: 对于XML,它如下所示: 最后,举例说明如
Jackson
和Jackson数据格式xml
模块,我能够将POJO
序列化为JSON
和xml
。我的对象中有几个字段(xml属性)只应序列化为xml
,而不应序列化为JSON
。如果我应用@JsonIgnore
注释,即使使用@JsonXMLProperty
也会完全忽略该字段
我怎样才能只忽略JSON
中的字段而不忽略XML
?您应该使用该功能。例如,假设您的POJO
类如下所示:
现在,您可以使用Mix-in
接口为每个属性定义注释。对于JSON
它如下所示:
对于XML
,它如下所示:
最后,举例说明如何使用Mix-in
功能:
以上程序打印:
JSON
{
“身份证”:12
}
XML
12
是否只有在XML中才有可忽略的注释?@Thirumal,没有,但您可以使用MixIn
。好的,谢谢您的快速响应
class Pojo {
private long id;
private String xmlOnlyProperty;
// getters, setters
}
interface PojoJsonMixIn {
@JsonIgnore
String getXmlOnlyProperty();
}
interface PojoXmlMixIn {
@JacksonXmlProperty(isAttribute = true)
String getXmlOnlyProperty();
}
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>