Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用不同对象反序列化json数组-jackson/spring_Java_Spring_Jackson_Deserialization - Fatal编程技术网

Java 使用不同对象反序列化json数组-jackson/spring

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

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

[
  {
    "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();