Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 仅忽略json中的字段,而不忽略具有jackson dataformat xml的xml中的字段_Java_Json_Jackson_Json Serialization_Jackson Modules - Fatal编程技术网

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>