java - 如果所有嵌套字段都为空,Jackson 将忽略顶级字段的序列化

标签 java serialization jackson

我正在使用 Jackson ObjectMapper 序列化 POJO。我在 POJO 中嵌套了字段。例如:序列化类 MyClass

public class MyClass {
    private A a;
    private int i;
    //getters and setters
}

public class A {
    private String s;
    //getters and setters
}

我希望如果 String snull,则整个属性 A 不会被序列化。也就是说,如果 String snull,我希望输出为: {"myClass":{"i":10}}

但我得到的是 {"myClass":{"A":{},"i":10}} 作为输出。

我已经为序列化包含设置了NON_EMPTY (mapper.setSerializationInclusion(JsonInclude.Include.NON_EMPTY)),但它并没有解决问题

最佳答案

据我所知,您不能使用标准注释来做到这一点,但是以这种方式更改 MyClass.getA() 方法您应该可以做到这一点。

  public A getA() {
    if (a.getS() == null)
      return null;
    return a;
  }

关于java - 如果所有嵌套字段都为空,Jackson 将忽略顶级字段的序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42622698/

相关文章:

java - Jackson 注释在部署到 JBOSS 后被忽略

java - 无法确定 tag<shape 的类型

xml - Scala XML 序列化

java - 将 PoJo 的 JSON String 属性解析为对象

json - 如何在 Asp.net Core Web Api 中默认使用 Newtonsoft.Json?

c# - Binaryformatter 序列化中的十进制字节数组构造函数

java - 强制 Jackson 将 LocalDate 序列化为数组

java - 一种在 Eclipse 中按部分包定义搜索的方法?

java - 使用java正则表达式解析json数据

java - libGDX 将我的系统从像素更改为单位