用java中的jackson处理json(反)序列化中的基本联合类型

but5z9lq  于 2021-07-12  发布在  Java
关注(0)|答案(1)|浏览(396)

我知道围绕这个主题已经有几个问题了,但是我仍然很难为原始类型找到一个好的解决方案。我正在尝试序列化和反序列化以下json数据:

{
  "key": "key1"
  "value": "value1"
}

但是,该值是联合类型,可以是布尔值、数字或字符串。所以这些也是有效的输入:

{
  "key": "key2"
  "value": true
}

{
  "key": "key3"
  "value": 3
}

将其序列化和反序列化为JavaPOJO的最佳方法是什么?我的方法看起来是这样的(但显然只适用于字符串值)

@RequiredArgsConstructor
@Getter
@EqualsAndHashCode
public class Request {

    private final String key;

    private final String value;
}

@RequiredArgsConstructor
@Getter
@EqualsAndHashCode
public class Response {

    private final String key;

    @JsonInclude(JsonInclude.Include.NON_NULL)
    private final String value;
}
laximzn5

laximzn51#

就这样解决了。

@RequiredArgsConstructor
@Getter
@EqualsAndHashCode
public class Request {

    private final String key;

    @JsonTypeInfo(use = JsonTypeInfo.Id.CLASS, property = "valueClass")
    private final String value;

    private final String valueClass;
}

@RequiredArgsConstructor
@Getter
@EqualsAndHashCode
public class Response {

    private final String key;

    @JsonInclude(JsonInclude.Include.NON_NULL)
    @JsonTypeInfo(use = JsonTypeInfo.Id.CLASS, property = "valueClass")
    private final String value;

    @JsonIgnore
    private final String valueClass;
}

相关问题