Java 使用不同对象反序列化json数组-jackson/spring
我有一个奇怪的json数组字符串:Java 使用不同对象反序列化json数组-jackson/spring,java,spring,jackson,deserialization,Java,Spring,Jackson,Deserialization,我有一个奇怪的json数组字符串: [ { "schema": "Cancel", "version": "1.0.0" }, { "mandatory": true, "id": "uuid" } ] 它看起来像是由两个不同对象组成的数组,如下所示: class Object1 { private String schema; private String version; } 及 当我调用Spring Rest模板时,如: restTem
[
{
"schema": "Cancel",
"version": "1.0.0"
},
{
"mandatory": true,
"id": "uuid"
}
]
它看起来像是由两个不同对象组成的数组,如下所示:
class Object1 {
private String schema;
private String version;
}
及
当我调用Spring Rest模板时,如:
restTemplate.exchange(url, HttpMethod.GET, new HttpEntity<>(), ObjectFull[].class)
.getBody();
restemplate.exchange(url,HttpMethod.GET,new-HttpEntity(),ObjectFull[].class)
.getBody();
其中ObjectFull是包含前两个对象(Object1、Object2)字段的对象
我得到了两个物体的数组。第一个有一些字段,第二个有其他字段。
一切正常
但是,我发现使用objectFull[0].getSchema()
生成响应不够好
有没有办法通过使用Jackson注释将这两个对象合并成一个完整的反序列化过程
而不是用
ObjectFull[]
的两个元素数组来获取所有字段的简单ObjectFull
因为json是列表的表示,所以在所有字段都已填充的情况下,无法将其中的两个对象反序列化为一个对象。如果您确信始终会收到一个包含两个对象(相互补充)的列表,则可以编写一个简单的函数来接收json并读取列表,然后创建一个对象,在其中使用两个列表元素的值设置字段,然后返回该对象。因为json是列表的表示,所以在所有字段都已填充的情况下,无法将其中的两个对象反序列化为一个。如果您确信始终会收到一个包含两个对象(相互补充)的列表,则可以编写一个简单的函数来接收json并读取列表,然后创建一个对象,在其中使用两个列表元素的值设置字段,然后返回该对象。处理该对象的方法是创建类:
导入com.fasterxml.jackson.databind.JsonDeserializer
公共类ObjectFull扩展JsonDeserializer
并实现所需的方法处理方法是创建类: 导入com.fasterxml.jackson.databind.JsonDeserializer 公共类ObjectFull扩展JsonDeserializer
并实现所需的方法这种情况非常奇怪,我认为,您需要实现自定义反序列化程序。若您不想这样做,您需要将其反序列化为
Map
对象的列表/数组,并使用方法将列表合并到预期对象。请告诉我,如果你需要这个或一些例子的帮助。这是如此奇怪的情况,我认为,你需要实现自定义反序列化。若您不想这样做,您需要将其反序列化为Map
对象的列表/数组,并使用方法将列表合并到预期对象。请让我知道,如果你需要这个或一些例子的帮助。
restTemplate.exchange(url, HttpMethod.GET, new HttpEntity<>(), ObjectFull[].class)
.getBody();