【问题标题】:Is it possible to deserialize values missing from JSON to some default values?是否可以将 JSON 中缺少的值反序列化为某些默认值?
【发布时间】:2021-03-27 12:10:36
【问题描述】:

作为示例类:

@Getter @Setter
public static class SomeClass {
    private String notNull;
    private String nullSetEmpty;
    private String notExists;
}

可以通过覆盖配置将null 值反序列化为空,例如:

String json = " {\"notNull\": \"a value\", \"nullSetEmpty\": null}";
ObjectMapper om = new ObjectMapper();
om.configOverride(String.class)
    .setSetterInfo(JsonSetter.Value.forValueNulls(Nulls.AS_EMPTY));
SomeClass sc = om.readValue(json, SomeClass.class);
System.out.print(om.writerWithDefaultPrettyPrinter().writeValueAsString(sc));

这会产生:

{
 "notNull" : "a value",
 "nullSetEmpty" : "",
 "notExists" : null
}

但是这个notExists怎么样。可以为每个有问题的类添加默认值,但有没有像configOverride 这样的通用方法让杰克逊处理?

【问题讨论】:

    标签: java json jackson deserialization jackson2


    【解决方案1】:

    你可以在你的数据类中定义默认值

    @Getter
        @Setter
        public static class SomeClass {
            private String notNull;
            private String nullSetEmpty;
            private String notExists = "default-value";
        }
    

    【讨论】:

    • 谢谢,但正如我在问题中所说:可以为每个有问题的类添加默认值,但有没有通用的方法来做到这一点
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-07
    • 2017-07-06
    • 1970-01-01
    • 2020-05-31
    • 2015-02-16
    相关资源
    最近更新 更多