如何解决使用Java中的Jackson来处理JSON反序列化中的原始联合类型
我知道关于这个主题已经有几个问题了,但是我仍然很难为原始类型找到一个好的解决方案。我正在尝试序列化和反序列化以下JSON数据:
{
"key": "key1"
"value": "value1"
}
但是,值是联合类型,可以是布尔值,数字或字符串。因此,这些也是有效的输入:
{
"key": "key2"
"value": true
}
和
{
"key": "key3"
"value": 3
}
将其序列化和反序列化为Java POJO的最佳方法是什么?我的方法看起来像这样(但显然仅适用于字符串值)
@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;
}
解决方法
以这种方式解决。
@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;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。