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

使用Jackson映射时将默认值设置为空字段

鄂琛
2023-03-14

我正在尝试用Jackson将一些JSON对象映射到Java对象。JSON对象中的一些字段是强制性的(我可以用@NotNull标记),而一些字段是可选的。

在与Jackson进行映射之后,JSON对象中没有设置的所有字段在Java中都将有一个空值。是否有类似于@NotNull的注释可以告诉Jackson为Java类成员设置默认值,以防它为空?

class JavaObject {
    @NotNull
    public String notNullMember;

    @DefaultValue("Value")
    public String optionalMember;
}
{
    "notNullMember" : "notNull"
}

或:

{
    "notNullMember" : "notNull",
    "optionalMember" : "optional"
}

@defaultvalue注释只是为了显示我的要求。这不是真正的注解。如果JSON对象与第一个示例类似,我希望optionalmember的值为“value”而不是null。有没有做这种事的注解?

共有1个答案

郭单鹗
2023-03-14

没有可设置默认值的注释。
只能在java类级别设置默认值:

public class JavaObject 
{
    public String notNullMember;

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

  • 我想将字段从映射到类,如果源值为,我想将其转换为基于数据类型的默认值(“”表示字符串,0表示数值类型等)。对于设置值,我不使用常规的setter,而是使用builder(带有protobuf,因此方法的名称为和)。 我的映射器如下所示: 使用此代码生成的映射器实现调用,而不是执行null检查并在source返回时设置默认值。有趣的是,当我向方法添加以下注释时,在实现中出现了空检查。 这是构建器中的

  • 问题内容: 为什么会出现错误“属性值必须恒定”。是不是 空 常量??? 问题答案: 我不知道为什么,但是JLS很清楚: 默认元素的定义是: 不幸的是,当您不符合语言规范时,我一直发现新的语言功能(枚举和现在的注释)具有非常无用的编译器错误消息。 编辑:一点点搜索在JSR-308中发现了以下内容,他们争辩说在这种情况下允许空值: 我们注意到对该提案的一些反对意见。 该提案无法解决以前无法实现的任何事

  • 我使用Java和Jackson库将JSON文件解析为Java类。我的问题是,如果值为null或空,我无法设置默认值。有可能吗?现在,我只是把它写在setters部分。 例如,我有一个JSON文件 在我的Java类中,如果值为null或空,我想将其设置为Java函数。 举个例子 所以,如果设置了这个值,那么就是它。如果不是,那应该是美国。

  • 我正在创建一个rest方法,它可以使用RequestParam注释处理一个可选参数(在本例中是性别)。但性别值始终被视为空值。(spring Version4.0.0)第二个参数被认为是正确的。 提前谢了。潘卡杰

  • 我尝试使用liquibase使用liquibase“addDefaultValue”语法将我的列的默认值设置为null: 但是向myTable插入新行显示默认值仍然设置为“false”,就像以前一样。所以liquibase更改集不起作用。 如何设置列默认值为null与liquibase?