Java Can';无法从JSON获取对象

Java Can';无法从JSON获取对象,java,json,serialization,jackson,jhipster,Java,Json,Serialization,Jackson,Jhipster,所以,我目前正在使用AWS lambda,我有一个奇怪的行为问题。 如果microservices返回一个对象列表,我可以通过将其强制转换为list来获取所有项目 JSON: 用这样简单的代码 return (List<Delegation>) response.getBody().getPayload(); 同样的事情(除此之外,它现在不在列表中) 当我试着用同样的方式来表达时 (Delegation) response.getBody().getPayload(); 我得到了

所以,我目前正在使用AWS lambda,我有一个奇怪的行为问题。 如果microservices返回一个对象列表,我可以通过将其强制转换为list来获取所有项目

JSON:

用这样简单的代码

return (List<Delegation>) response.getBody().getPayload();
同样的事情(除此之外,它现在不在列表中) 当我试着用同样的方式来表达时

(Delegation) response.getBody().getPayload();
我得到了类强制转换异常,表示我无法将
java.util.LinkedHashMap
强制转换为我的类型

然后我尝试使用Jackson mapper:

mapper.convertValue(response.getBody().getPayload(), Delegation.class);
但我收到了一个错误

Caused by: com.fasterxml.jackson.databind.JsonMappingException: Unexpected token (START_OBJECT), expected START_ARRAY: Expected array or string.
at [Source: N/A; line: -1, column: -1] (through reference chain: xxx.Delegation["start"])
at com.fasterxml.jackson.databind.JsonMappingException.from(JsonMappingException.java:216)
at com.fasterxml.jackson.databind.DeserializationContext.wrongTokenException(DeserializationContext.java:962)
at xxx.util.JSR310LocalDateDeserializer.deserialize(JSR310LocalDateDeserializer.java:61)
at xxx.util.JSR310LocalDateDeserializer.deserialize(JSR310LocalDateDeserializer.java:17)
xxx
只是为了隐私。 我正在使用jhipster生成的代码

委托类

public class Delegation {

    private Long id;

    private String user;

    private LocalDate start;

    private LocalDate end;
}
省略了setter和getter

同样的错误也会发生在我尝试这样做的时候
mapper.convertValue(input.get(“start”)、LocalDate.class)

其中输入转换为LocalDate(java.lang.IllegalArgumentException:Unexpected token(START_对象),预期的START_数组:预期的数组或字符串。
在[Source:N/A;line:-1,column:-1])

第一个JSON中,
payload
是一个数组,它将被转换成一个
列表。在第二个JSON中,
payload
是一个对象。难怪您不能将其转换为
列表
。您需要将该对象收集为单个
对象
,并可能将其添加到
列表
中,如果您希望它位于
列表
中,在第一个JSON中,
负载
是一个数组,它将转换为
列表
。在第二个JSON中,
payload
是一个对象。难怪您不能将其转换为
列表
。您需要将该对象收集为单个
对象
,并可能将其添加到
列表中
,如果您希望它位于
列表中

?我不是想把它转换成一个列表?我不想把它转换成一个列表什么是
T有效负载
运行时绑定的是哪种类型?
ResponseClass
的实例是如何创建的?@Meiko嘿,我将T负载切换为对象负载,但这并没有改变任何东西。它是由RestTemplate创建的。ResponseEntity response=template.postForEntity(“端点”,请求,ResponseClass.class);您是否可以分析结果
java.util.LinkedHashMap
(来自
response.getBody().getPayload()
)的结果。。。它有预期的结构吗?是的,它有。我登记了。当列表被返回时,它实际上是一个LinkedHashMaps列表,当转换到myObject的列表时,它可以正常工作。但是当只返回LinkedHashMap时,它不能被强制转换到myObject。对于我来说这真的很难理解如果你想,你可以在你的问题中添加类
委托
…什么是
T有效载荷
运行时绑定了哪种类型?
ResponseClass
的实例是如何创建的?@Meiko嘿,我将T负载切换为对象负载,但这并没有改变任何东西。它是由RestTemplate创建的。ResponseEntity response=template.postForEntity(“端点”,请求,ResponseClass.class);您是否可以分析结果
java.util.LinkedHashMap
(来自
response.getBody().getPayload()
)的结果。。。它有预期的结构吗?是的,它有。我登记了。当列表被返回时,它实际上是一个LinkedHashMaps列表,当转换到myObject的列表时,它可以正常工作。但是当只返回LinkedHashMap时,它不能被强制转换到myObject。对我来说,这真的很难理解如果你想,你可以在你的问题中添加类
委托
。。。
mapper.convertValue(response.getBody().getPayload(), Delegation.class);
Caused by: com.fasterxml.jackson.databind.JsonMappingException: Unexpected token (START_OBJECT), expected START_ARRAY: Expected array or string.
at [Source: N/A; line: -1, column: -1] (through reference chain: xxx.Delegation["start"])
at com.fasterxml.jackson.databind.JsonMappingException.from(JsonMappingException.java:216)
at com.fasterxml.jackson.databind.DeserializationContext.wrongTokenException(DeserializationContext.java:962)
at xxx.util.JSR310LocalDateDeserializer.deserialize(JSR310LocalDateDeserializer.java:61)
at xxx.util.JSR310LocalDateDeserializer.deserialize(JSR310LocalDateDeserializer.java:17)
public class Delegation {

    private Long id;

    private String user;

    private LocalDate start;

    private LocalDate end;
}