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

Jackson包含用户设置空值吗?

石博艺
2023-03-14

我正在使用jackosn序列化一个POJO,我希望用户设置了某个值的所有值都必须包含在序列化中,不管它是否为空。

因此当前:

public class YourItem {
    public String key;
    public String item;
}

当前用户执行以下操作时:

YourItem item = new YourItem();
item.setKey("abc");

序列化提供:

{

        "key" : "abc"
}

因为我将objectmapper配置为objectmapper.setinclude(include.non_null)

  YourItem item = new YourItem();
    item.setKey("abc");
    item.setItem(null);
{

    "key" : "abc",
    "item" : null

}

如何区分用户设置null和默认null。ObjectMapper中是否有配置??

共有1个答案

党建义
2023-03-14

有些人认为使用null是一种糟糕的做法(例如,《清洁代码》一书)

忽略这一点,您无法按语言设计区分默认初始化null和用户设置null

您需要某种状态来跟踪某个字段是否已被setter访问。如果它还没有被setter访问并且为null,则忽略它。

实现这一点的一种方法是Jackson筛选器,它允许您定义用于在运行时序列化字段的各种条件(您的条件是setter-access-state指示该字段是由用户设置的)

http://www.baeldung.com/jackson-serialize-field-custom-criteria

 类似资料:
  • 问题内容: MSDN文档指出: COUNT(*)返回组中的项目数。这包括NULL值和重复项。 您如何在一个组中有一个空值?谁能解释他们要提出的观点? 问题答案: 如果你有这张桌子 表格1: 然后 输出为:

  • 问题内容: 我在这里阅读了很多关于stackoverflow和google的其他文章,但找不到解决方案。 当我将模型从CharField更改为ForeignKey时,一切都开始了。我收到的错误是: 我的模型如下: 之前不存在场所_国家/地区,因此迁移成功完成。但是,place_city是一个CharField。 我对迁移文件进行了一些更改,以便它将执行sql,如下所示: 提前致谢! 更新:我的新迁

  • 问题内容: 我正在创建一个将结果作为JSON返回的API。当前值是否为null时是否存在最佳做法的当前最佳实践?例如: 要么 因为第二个较小,所以我倾向于这种样式,但是我不确定是否有首选样式。从客户的角度看,这两种样式在功能上似乎是等效的。每个都有优点或缺点吗? 问题答案: 第二个将节省少量带宽,但是如果您担心这一点,则还可以使用索引数组,而不用键填充JSON。显然,它比您现在拥有的要短得多。 在

  • 问题内容: 我正在尝试使用Jackson将一些JSON对象映射到Java对象。JSON对象中的某些字段是必填字段(可以用标记),而某些字段是可选字段。 用Jackson映射之后,在JSON对象中未设置的所有字段在Java中都将具有空值。是否有类似的注释可以告诉Jackson为Java类成员设置默认值(如果为null)? 编辑:为了使问题更清楚,这里是一些代码示例。 Java对象: JSON对象可以

  • 我正在尝试用Jackson将一些JSON对象映射到Java对象。JSON对象中的一些字段是强制性的(我可以用标记),而一些字段是可选的。 在与Jackson进行映射之后,JSON对象中没有设置的所有字段在Java中都将有一个空值。是否有类似于的注释可以告诉Jackson为Java类成员设置默认值,以防它为空? 或: 注释只是为了显示我的要求。这不是真正的注解。如果JSON对象与第一个示例类似,我希

  • 我正在使用Jackson 2.4将对象序列化为JSON。 当我序列化对象列表时,如果某些元素为空,则结果字符串包含一些“空”字符串。 如何防止元素被序列化?是否有任何配置?我已经设置了! 下面是我的代码: 连载之后我得到了这个: