gpt4 book ai didi

java - Jackson JSON 生成器为缺失的对象创建空 JSON 值

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:35:55 24 4
gpt4 key购买 nike

我已经开始使用 Jackson 作为 JSON 生成器,作为 google GSON 的替代品。我遇到了 Jackson 生成对象的问题:如果对象确实为 null,则为 null。另一方面,GSON 在 JSON 中生成 NO 条目,这是我想要的行为。有没有办法阻止 Jackson 在对象丢失时生成 null 对象/值?

jackson

        ObjectMapper mapper = new ObjectMapper();
StringWriter sw = new StringWriter();
mapper.writeValue(sw, some_complex_object);
String jackson = sw.getBuffer().toString();

System.out.println("********************* START JACKSON JSON ****************************");
System.out.println(jackson);
System.out.println("********************* END JACKSON JSON ****************************");

生成这个:

{"eatwithrustyspoon":{"urlList":null,"device":"iPad","os":"iPhone OS","peer_id":

GSON 看起来像这样:

        Gson gson = new Gson();
String json = gson.toJson(some_complex_object);

System.out.println("********************* START GSON JSON ****************************");
System.out.println(json);
System.out.println("********************* END GSON JSON ****************************");

它生成了这个(这就是我想要的——注意“urlList”:null 没有生成):

{"eatwithrustyspoon":{"device":"iPad","os":"iPhone OS","peer_id"

最佳答案

来自Jackson FAQ :

我可以省略空值的 Bean 属性的写入吗? (“如何防止写入空属性”,“如何抑制空值”)

是的。根据 JacksonAnnotationSerializeNulls ,你可以使用:

  objectMapper.setSerializationInclusion(JsonSerialize.Inclusion.NON_NULL);
// or (for older versions):
objectMapper.configure(SerializationConfig.WRITE_NULL_PROPERTIES, false);

瞧,没有更多的空值。请注意,您必须在序列化 bean 之前配置映射器,因为此设置可能会与序列化程序一起缓存。因此设置得太晚可能会阻止更改生效。

关于java - Jackson JSON 生成器为缺失的对象创建空 JSON 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14858369/

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