[英]Map JSON to pojo using Jackson for List that have different parameters
JSON格式:
[
{
"0":
{
"cast":"",
"showname":"woh pagle",
"type":"Episodes"
},
"video":[
{
"src":"video.mp4"
},
{
"DRM":"False"
}
]
}
]
這里的問題是我得到以下異常:
org.codehaus.jackson.map.JsonMappingException:無法從[源:java.io.StringReader@1c9ca1;]中的START_OBJECT令牌反序列化java.util.ArrayList實例。 行:1,列:55617](通過參考鏈:com.apalya.myplex.valueobject.ThirdPartyContentDetailsArray [“ video”])
我的pojo課是:
@JsonIgnoreProperties(ignoreUnknown = true)
@JsonProperty("0")
private ThirdPartySubContentDetails subContent;
@JsonProperty("video")
private List<ThirdPartySubContentVideoInfo> video;
我的子類pojo是:
private String src;
@JsonIgnore
@JsonProperty("DRM")
private String drm;
請幫助我為該視頻列表編寫一個pojo。
您的json是作為數組而不是對象開始的。 更改的重要部分是Objectmapper應如何生成json。 要返回列表,您需要這樣做:
List<FirstJson> jsonList = mapper.readValue(json, new TypeReference<List<FirstJson>>(){});
這是我在本地實施的簡短工作測試:
public static void main(String[] args) {
String json = "[{\"0\":{\"cast\":\"\",\"showname\":\"wohpagle\",\"type\":\"Episodes\"},\"video\":[{\"src\":\"video.mp4\"},{\"DRM\":\"False\"}]}]";
ObjectMapper mapper = new ObjectMapper();
List<FirstJson> jsonList = mapper.readValue(json, new TypeReference<List<FirstJson>>(){});
System.out.println(jsonList.toString());
}
Pojo中JsonArray的第一部分。(命名為FirstJson)
public class FirstJson{
@JsonProperty("0")
private FirstJson subContent;
private String cast;
private String showname;
private String type;
@JsonProperty("video")
private List<Video> videos;
//getter/setter
和視頻Pojo:
public class Video {
private String src;
@JsonProperty("DRM")
private String drm;
//getter/setter
只是一個旁注:如果在同一類文件中聲明pojos,則這些類應該是靜態的。 public static class FirstJson
根據問題中描述的JSON結構,以下應該是POJO:
public class MainPojo
{
@JsonProperty("0")
private ThirdPartySubContentDetails subContent;
@JsonProperty("video")
private List<ThirdPartySubContentVideoInfo> video;
// Getters and Setters for subContent and video
}
class ThirdPartySubContentDetails
{
private String cast;
private String showName;
private String type;
// Getters and Setters for cast, showName and type
}
@JsonIgnoreProperties(ignoreUnknown = true)
class ThirdPartySubContentVideoInfo
{
@JsonProperty("src")
private String src;
@JsonProperty("DRM")
private String drm;
// Getters and Setters for src and drm
}
您應該按以下方式調用解串器方法:
List<MainPojo> list = new ObjectMapper().readValue(json, new TypeReference<List<MainPojo>>(){});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.