繁体   English   中英

具有不同对象的反序列化 json 数组 - jackson/spring

[英]Deserialization json array with different objects - jackson/spring

我有一个奇怪的 json 数组字符串:

[
  {
    "schema": "Cancel",
    "version": "1.0.0"
  },
  {
    "mandatory": true,
    "id": "uuid"
  }
]

它看起来像它的两个不同对象的数组,例如:

class Object1 {
private String schema;
private String version;
}

class Object2{
private boolean mandatory;
private String id;
}

当我调用 Spring Rest 模板时,如:

restTemplate.exchange(url, HttpMethod.GET, new HttpEntity<>(), ObjectFull[].class)
                .getBody();

其中 ObjectFull 是 Object,其中包含来自前两个对象(Object1、Object2)的字段。

我得到两个对象的数组。 第一个有一些字段,第二个有其他字段。 一切正常。

但是我发现使用objectFull[0].getSchema()构建响应不够好。

是否有任何选项可以通过使用 Jackson 注释将这两个 object 组合成一个彻底的反序列化过程?

而不是ObjectFull[]的两个元素数组得到所有字段的简单ObjectFull

因为 json 是 List 的表示形式,所以在所有字段都填满的情况下,您不能将其中的两个对象反序列化为一个。 如果您确定您将始终收到一个包含两个对象(相互补充)的列表,您可以编写一个简单的 function 接收该 json 并读取列表,然后创建一个 ZA8CFDE6331BD59EB2AC96F8911C4B66 中的字段来自两个列表元素,并返回 object。

处理的方法是创建class:

导入 com.fasterxml.jackson.databind.JsonDeserializer;

公共 class ObjectFull 扩展 JsonDeserializer

并实现所需的方法

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM