【发布时间】:2019-04-30 21:35:25
【问题描述】:
我正在使用 spring rest 模板,并希望将 JSON 响应解析为相应的 java POJO。每次我得到一个 MismatchedInputException - 无法反序列化超出起始数组令牌的实例。
我查看了几个与杰克逊有关的问题,但没有找到合适的解决方案。 我不确定我的 POJO 结构是否正确。
先是相关的JSON:
{
"days":[
[
{
"day":"2019-04-29",
"time":"08:00-09:30",
"room":"room1",
"name":"lecture1",
"lecturer":"prof1",
"eventId":332713,
"modified":false
}
],
[
],
[
],
[
{
"day":"2019-05-02",
"time":"08:00-10:15",
"room":"room2",
"name":"lecture2",
"lecturer":"prof2",
"eventId":332714,
"modified":false
},
{
"day":"2019-05-02",
"time":"10:45-13:00",
"room":"room3",
"name":"lecture3",
"lecturer":"prof3",
"eventId":332721,
"modified":false
}
],
[
],
[
],
[
]
]
}
POJO 结构:
public class Main{
ArrayList<Day> days = new ArrayList<>();
public ArrayList<Day> getDays() {
return days;
}
public void setDays(ArrayList<Day> days) {
this.days = days;
}
public class Day {
private String day;
private String time;
private String room;
private String name;
private String lecturer;
private Integer eventId;
private Boolean modified;
public Day() {
}
// Getter and setter of Day Object
}
}
API 对象中的 Rest-Template 方法:
public String getInfoByEventsPeriods(String eventIDs) {
String url = APIURL + "/info?from="2019-04-29"&to="2019-05-03"&eventId=" + eventIDs;
return rest.getForObject(url, String.class);
}
在主对象中使用 ObjectMapper 进行处理:
public Main getLectures(String eventIDs) throws IOException {
API api = new API();
ObjectMapper mapper = new ObjectMapper();
return mapper.readValue(api.getInfoByEventsPeriods(eventIDs), Main.class);
}
【问题讨论】:
标签: java spring-mvc jackson resttemplate pojo