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

新手上路,请多包涵

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

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

编辑:为了让问题更清楚,这里有一些代码示例。

Java 对象:

 class JavaObject {
    @NotNull
    public String notNullMember;

    @DefaultValue("Value")
    public String optionalMember;
}

JSON 对象可以是:

 {
    "notNullMember" : "notNull"
}

或者:

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

@DefaultValue 注释只是为了显示我的要求。这不是真正的注释。如果 JSON 对象与第一个示例中的一样,我希望 optionalMember 的值是 "Value" 而不是 null 。有没有做这样的事情的注释?

原文由 gookman 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.7k
2 个回答

没有注释来设置默认值。

您只能在 java 类级别上设置默认值:

 public class JavaObject
{
    public String notNullMember;

    public String optionalMember = "Value";
}

原文由 Ilya 发布,翻译遵循 CC BY-SA 3.0 许可协议

只有一个建议的解决方案保留 default-valuesome-value:null 被显式设置时(POJO 可读性在那里丢失并且很笨拙)

这是如何保留 default-value 并且永远不要将其设置为 null

 @JsonProperty("some-value")
public String someValue = "default-value";

@JsonSetter("some-value")
public void setSomeValue(String s) {
    if (s != null) {
        someValue = s;
    }
}

原文由 Sergei Voitovich 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题