【发布时间】:2020-10-12 00:06:35
【问题描述】:
如何将此 json 转换为 pojo,但它会抛出异常。这是 Date 字段的正确方法吗?
线程“main”com.fasterxml.jackson.databind.exc.MismatchedInputException 中的异常:无法从 START_OBJECT 令牌中反序列化 com.utils.POJO[] 的实例。
{
"rentals": [{
"product": "12345",
"startDate": "2020-08-31T19:59:59-0400",
"AmountPaid": 100.0,
"endDate": "2020-06-02T03:25:06-0400"
}, {
"product": "6789",
"startDate": "2020-09-09T00:00:00-0400",
"AmountPaid": 100.0,
"endDate": "2020-06-02T02:41:23-0400"
}]
}
ObjectMapper mapper = new ObjectMapper();
POJO [] result = mapper.readValue(json, POJO [].class);
mapper.enable(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY);
public class POJO {
private String product;
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss-0400")
private Date startDate;
private String AmountPaid;
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss-0400")
private Date endDate;
}
【问题讨论】:
-
JSON 文本以
{开头,这意味着根是一个对象(因此是START_OBJECT令牌),其中包含一个名为rentals的字段。ACCEPT_SINGLE_VALUE_AS_ARRAY功能不是您想要的,UNWRAP_ROOT_VALUE是。 -
如何在读取 json 数组时删除出租根目录?