Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/352.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 包含映射的空值的Jackson序列化_Java_Json_Serialization_Jackson2 - Fatal编程技术网

Java 包含映射的空值的Jackson序列化

Java 包含映射的空值的Jackson序列化,java,json,serialization,jackson2,Java,Json,Serialization,Jackson2,我有以下POJO,我想用Jackson 2.9.x序列化 static class MyData { public Map<String, MyInnerData> members; } static class MyInnerData { public Object parameters; public boolean isPresent; } 所需输出(使用Jackson 2.8.x时,相同代码给出正确的输出) 如果我在映射器上删除setSerializationI

我有以下POJO,我想用Jackson 2.9.x序列化

static class MyData {
  public Map<String, MyInnerData> members;
}
static class MyInnerData {
  public Object parameters;
  public boolean isPresent;
}
所需输出(使用Jackson 2.8.x时,相同代码给出正确的输出)

如果我在映射器上删除setSerializationInclusion(JsonInclude.Include.NON_NULL),我将获得所需的输出,但无法更改
ObjectMapper
的现有配置。但是,我可以对POJO进行更改


获得所需输出的最小更改是什么?

您需要如下配置对象:
mapper.setDefaultPropertyInclusion(JsonInclude.Include.ALWAYS)

不知道注释是否可传递,您可以尝试:
@JsonInclude(Include.ALWAYS)
。在MyData类或成员上attribute@pdem,谢谢你,真管用。你想把它贴出来作为答案吗?谢谢,你可以贴出来,我没有在班级和成员身上尝试过,你可能比我有更多的信息,还有一个完整的工作示例。。
Map<String, Object> nodeMap = new LinkedHashMap<>();
nodeMap.put("key-one", "val1");
nodeMap.put("key-null", null);
nodeMap.put("key-two", "val2");
Map<String, Object> child1 = new LinkedHashMap<>();
child1.put("c1", "v1");child1.put("c2", null);
nodeMap.put("list", child1);

MyInnerData innerData1 = new MyInnerData();
innerData1.parameters = nodeMap;
innerData1.isPresent = true;
MyData myData = new MyData();
myData.members = new LinkedHashMap<>();
myData.members.put("data1", innerData1);

// serialize the data
ObjectMapper mapper = new ObjectMapper().setSerializationInclusion(JsonInclude.Include.NON_NULL);
String actual = mapper.writeValueAsString(myData);
System.out.println(actual);
{"members":{"data1":{"parameters":{"key-one":"val1","key-two":"val2","list":{"c1":"v1"}},"isPresent":true}}}
{"members":{"data1":{"parameters":{"key-one":"val1","key-null":null,"key-two":"val2","list":{"c1":"v1","c2":null}},"isPresent":true}}}