繁体   English   中英

Jackson序列化null或空对象

[英]Jackson serialize null or empty object

有一个POJO:

class A {
   private B b;
}

B:

class B {
   private String c;
}

有没有一种使Jackson序列化对象A的正确方法,使Ab = null (或者甚至b所有字段都为空或默认),形式为:

{
   b: {}
}

并且无需使用自定义序列化程序。 上层的POJO实际上很复杂,维护串行器带来的麻烦多于好处。

将默认属性Include.NON_NULL设置为Include.NON_NULL

import com.fasterxml.jackson.annotation.JsonInclude.Include;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import java.io.IOException;

public class JsonApp {

  public static void main(String[] args) throws IOException {
    ObjectMapper mapper = new ObjectMapper();
    mapper.enable(SerializationFeature.INDENT_OUTPUT);
    mapper.setDefaultPropertyInclusion(Include.NON_NULL);

    System.out.println(mapper.writeValueAsString(new A()));
  }
}

class A {
  private B b = new B();

  public B getB() {
    return b;
  }

  public void setB(B b) {
    this.b = b;
  }
}

class B {
  private String c;

  public String getC() {
    return c;
  }

  public void setC(String c) {
    this.c = c;
  }
}

上面的代码打印:

{
  "b" : { }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM