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

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

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

  1. {
  2. "key": "key1"
  3. "value": "value1"
  4. }

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

  1. {
  2. "key": "key2"
  3. "value": true
  4. }

  1. {
  2. "key": "key3"
  3. "value": 3
  4. }

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

  1. @RequiredArgsConstructor
  2. @Getter
  3. @EqualsAndHashCode
  4. public class Request {
  5. private final String key;
  6. private final String value;
  7. }
  8. @RequiredArgsConstructor
  9. @Getter
  10. @EqualsAndHashCode
  11. public class Response {
  12. private final String key;
  13. @JsonInclude(JsonInclude.Include.NON_NULL)
  14. private final String value;
  15. }
laximzn5

laximzn51#

就这样解决了。

  1. @RequiredArgsConstructor
  2. @Getter
  3. @EqualsAndHashCode
  4. public class Request {
  5. private final String key;
  6. @JsonTypeInfo(use = JsonTypeInfo.Id.CLASS, property = "valueClass")
  7. private final String value;
  8. private final String valueClass;
  9. }
  10. @RequiredArgsConstructor
  11. @Getter
  12. @EqualsAndHashCode
  13. public class Response {
  14. private final String key;
  15. @JsonInclude(JsonInclude.Include.NON_NULL)
  16. @JsonTypeInfo(use = JsonTypeInfo.Id.CLASS, property = "valueClass")
  17. private final String value;
  18. @JsonIgnore
  19. private final String valueClass;
  20. }
展开查看全部

相关问题