第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Jackson 將 JSON 映射到 Java POJO

Jackson 將 JSON 映射到 Java POJO

慕哥9229398 2022-11-02 15:39:22
我正在使用 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);    }
查看完整描述

2 回答

?
哆啦的時光機

TA貢獻1779條經驗 獲得超6個贊

是的,你是對的,反序列化時使用了錯誤的類型。

我不確定,但是您的days數組包含另一個帶有day對象的數組,但是在您的結構中 ArrayList 由 objects 組成day,而不是它們的數組。


正確的 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

         },

         ......

   ]

}   

因此,根據需要修復的內容更改響應結構或 pojo 對象。

如果你需要修改 POJO,你ArrayList必須包含List天數。


查看完整回答
反對 回復 2022-11-02
?
蝴蝶不菲

TA貢獻1810條經驗 獲得超4個贊

你能像下面這樣擁有你的 POJO。我嘗試使用您的 JSON 反序列化,并且能夠成功反序列化。


class Day {


  private String day;

  private String time;

  private String room;

  private String name;

  private String lecturer;

  private Integer eventId;

  private Boolean modified;


  public void setDay(String day) {

    this.day = day;

  }


  public void setTime(String time) {

    this.time = time;

  }


  public void setRoom(String room) {

    this.room = room;

  }


  public void setName(String name) {

    this.name = name;

  }


  public void setLecturer(String lecturer) {

    this.lecturer = lecturer;

  }


  public void setEventId(Integer eventId) {

    this.eventId = eventId;

  }


  public void setModified(Boolean modified) {

    this.modified = modified;

  }

}


class Main{

  private List<List<Day>> days;

  public void setDays(List<List<Day>> days) {

    this.days = days;

  }

}

http://img1.sycdn.imooc.com//63621ed60001424825600705.jpg

查看完整回答
反對 回復 2022-11-02
  • 2 回答
  • 0 關注
  • 209 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號