gpt4 book ai didi

java - 使用具有不同参数的 Jackson for List 将 JSON 映射到 pojo

转载 作者:行者123 更新时间:2023-12-02 03:41:32 24 4
gpt4 key购买 nike

JSON 格式:

[
{
"0":
{
"cast":"",
"showname":"woh pagle",
"type":"Episodes"
},
"video":[
{
"src":"video.mp4"
},
{
"DRM":"False"
}
]
}
]

这里的问题是我遇到以下异常:

org.codehaus.jackson.map.JsonMappingException: Can not deserialize instance of java.util.ArrayList out of START_OBJECT token at [Source: java.io.StringReader@1c9ca1; line: 1, column: 55617] (through reference chain: com.apalya.myplex.valueobject.ThirdPartyContentDetailsArray["video"])

我的 pojo 类(class)是:

@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

旁注:如果您在同一个类文件中声明 pojo,则这些类应该是静态的。 公共(public)静态类FirstJson

关于java - 使用具有不同参数的 Jackson for List 将 JSON 映射到 pojo,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36786514/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com