gpt4 book ai didi

java - Jackson 序列化 null 或空对象

转载 作者:行者123 更新时间:2023-12-02 01:19:48 27 4
gpt4 key购买 nike

有一个 POJO:

class A {
private B b;
}

其中B:

class B {
private String c;
}

是否有一种正确的方法可以使 Jackson 序列化 A 的对象,使 A.b = null(甚至使 b 拥有其所有字段)为空或默认),形式为:

{
b: {}
}

并且不使用自定义序列化器。上层POJO其实很复杂,维护序列化器弊大于利。

最佳答案

将默认属性包含设置为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" : { }
}

关于java - Jackson 序列化 null 或空对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57921579/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com