gpt4 book ai didi

java - jackson :将未初始化的集合字段序列化为空

转载 作者:行者123 更新时间:2023-11-30 06:55:22 25 4
gpt4 key购买 nike

我有一个带有字段或属性的 POJO,包含对象集合,如下所示:

public class Box {

public List<Items> items;

}

默认情况下,items 的值为空,我不想用空列表初始化它

现在,如果我尝试使用 Jackson 对其进行序列化,我将得到 NullPointerException。有没有一种简单的方法可以让 Jackson 不破坏这样的值并将其序列化为一个空集合:[ ]

注意。这个类只是一个简化的例子。实际上,有上百个类和许多在每个类中具有不同名称的字段,它们偶尔会在代码的某处设置为 null,从而破坏运行时的序列化。

最佳答案

如果您不想更改 POJO 类的契约,请考虑定义扩展 JsonSerializer JsonDeserializer 的自定义 Jackson 序列化器/反序列化器的可能性/em> 分别。例如:

 public class CountryDeserializer extends JsonDeserializer<CountryCode> {
@Override
public CountryCode deserialize(final JsonParser jp, final DeserializationContext ctxt) throws IOException {
return CountryCode.getByCode(jp.getText());
}
}

然后

 @JsonDeserialize(using=CountryDeserializer.class)
private CountryCode country;

您可以检查您的字段是否为空,并在两个方向(序列化/反序列化)采取相应行动。

关于java - jackson :将未初始化的集合字段序列化为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35432133/

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