当前位置: 首页 > 知识库问答 >
问题:

Jackson忽略顶级字段序列化,如果其所有嵌套字段为空

东方建修
2023-03-14

我正在使用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
}

如果字符串snull,则不序列化整个属性a。也就是说,如果字符串snull,我希望输出为:{“MyClass”:{“I”:10}}

但我得到的是{“MyClass”:{“a”:{},“I”:10}}作为输出。

我已经为序列化包含设置了non_empty(mapper.setSerializationInclusive(JSONInclude.include.non_empty)),但这并不能解决问题

共有1个答案

酆华皓
2023-03-14

当然,您不能使用标准注释来完成此操作,但通过这种方式更改MyClass.geta()方法,您应该可以完成此操作。

  public A getA() {
    if (a.getS() == null)
      return null;
    return a;
  }
 类似资料:
  • 我正在使用Jackson,我有一些JSON模式对象设置如下: 我试图忽略所有为空或空的字段,这工作正常。但我也想忽略字段全部为空或空的对象。例如: 生成的 JSON 字符串是 {“name”:“John Doe”,“child”:{},“sibling”:{}},但我希望它是 。创建 时需要初始化和,所以我不想更改它。有没有办法让杰克逊使用自定义序列化程序将具有空字段的对象视为空?我已经看到了对特

  • 我有以下xml 我需要将其反序列化为以下POJO: 这里的问题是被包装在元素中

  • 例如: 我知道有jackson注解可以这样做,但是我的字段已经用我的持久性注解进行了注解,所以我想避免重复,因为我已经有了我想忽略的注解的字段

  • 问题内容: 如果该字段的值为null,如何配置Jackson在序列化期间忽略该字段的值。 例如: 问题答案: 要使用抑制具有空值的序列化属性,可以直接配置或使用批注: 要么: 或者,你可以在中使用,以便在值不为时显示属性。

  • 我使用Spring并创建了一个REST服务。 这是我的控制器的一部分: 该人员的角色是延迟初始化的,当时不需要。当(1)被注释掉时,所有操作都将失败 org.springframework.http.converter.HttpMessageNotWritableException:无法写入JSON:无法延迟初始化角色集合:no.something.project.Person.roles,无法初

  • 我有这样的Jackson注释类: 假设我不能更改我的类代码。那么,如何让ObjectMapper只覆盖field2的JsonIgnore并将其序列化为json?但我希望它忽略field4。这很简单,只需要几行代码吗? 我的常规序列化代码: