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

2024-06-26

JSON 格式:

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

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

org.codehaus.jackson.map.JsonMappingException:无法反序列化 START_OBJECT 令牌中的 java.util.ArrayList 实例位于 [来源: java.io.StringReader@1c9ca1;行: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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用具有不同参数的 Jackson for List 将 JSON 映射到 pojo 的相关文章

随机推荐

  • OpenGL ES 2.0 只绘制一次对象

    首先我要说的是 很抱歉今天问了这么多问题 所以 我有一个圈子的课程 我有一个包含 3 个圆形实例的数组列表 每个实例都有不同的 x 坐标来绘制 不管出于什么原因 OpenGL ES 2 0 只绘制其中之一 尽管我调用所有这些来绘制 我检查了
  • 是否可以检测Android应用程序卸载?

    我的应用程序使用 Google 的 C2DM 推送通知 来通知用户朋友的新活动 一旦他们安装了应用程序 我就会向 C2DM 服务器注册设备并存储用户的电话号码 所以我知道用户正在使用我的应用程序 我可以向他 她发送推送通知 但是 如果用户卸
  • PHP:将“’”字符从 ISO-8859-1 转换为 UTF-8 时出现问题

    我在使用 PHP 将 ISO 8859 1 数据库内容转换为 UTF 8 时遇到一些问题 我正在运行以下代码来测试 Connect to a latin1 charset database and retrieve Georgia O Ke
  • 如何在聚合框架中按位置修改数组中的值

    假设有一个简单的文档 array a b c d 如何修改second值在聚合 With update这很简单 db collection updateOne set array 1 B gives array a B c d 在聚合框架中
  • Apache ReWrite 规则是否排除单个文件或文件类型?

    您能帮助我制定一条 Apache 规则来排除特定文件名或文件类型吗 这是我目前的规则 RewriteRule blog L RewriteRule crossdomain xml L Based on first response Rewr
  • AT命令用于接收自动短信通知

    我现在有 2 个 gprs gsm 调制解调器 其中一个是华为 另一个是 prolink 调制解调器 我通过 AT 命令发送或接收短信没有问题 但是 我尝试使用此命令 AT CNMI 接收自动通知 但无法使其正常工作 但当我尝试此命令时 调
  • 使用 Bash 显示进度指示器(旋转器)[重复]

    这个问题在这里已经有答案了 使用仅 bash 的脚本 如何提供 bash 进度指示器 例如 当我从 bash 运行命令时 当该命令正在执行时 让用户知道某些事情仍在发生 在这个使用 SCP 的示例中 我演示了如何获取进程 ID pid 然后
  • 无法在单 SPA 应用程序中启动微前端应用程序

    我在尝试在 Single SPA 应用程序中启动子应用程序时遇到错误 基本上 我正在尝试开发一种 util 应用程序 Single SPA 中的子应用程序 其中包含 Sockjs Stomp client 等 我删除了节点模块和 packa
  • 导入父目录进行简单测试

    我从上到下搜索了这个网站 但还没有找到一种方法来真正实现我在 Python3x 中想要的东西 这是一个简单的玩具应用程序 所以我想我可以在断言中编写一些简单的测试用例 然后就到此为止了 它确实会生成报告等 因此我想确保我的代码在更改时不会做
  • sed:用下划线替换引号内的空格

    我有输入 例如 来自ifconfig run0 scan在 OpenBSD 上 它有一些用空格分隔的字段 但某些字段本身包含空格 幸运的是 包含空格的此类字段总是用引号引起来 我需要区分引号内的空格和分隔符空格 这个想法是用下划线替换引号内
  • 如何将 OpenGL 数学 (GLM) 添加到 Xcode 4?

    我不知道如何将框架添加到我的项目中 我尝试像任何其他框架一样添加它 方法是单击 链接二进制文件与库 下的加号按钮 然后单击 其他 然后选择 GLM 文件夹 但是当我去包含它时 自动完成功能可以工作 但无法构建 因为它说找不到该文件 图书馆网
  • 如何通过 Javascript 获取 Bootstrap 版本?

    有没有办法通过调用函数来获取Bootstrap版本 我做了一些研究 但找不到任何方法 版本信息包含在开头的注释中 如下所示 引导程序 v3 3 7 http getbootstrap com http getbootstrap com 版权
  • Windows 终端设置位置在哪里?

    我编辑了设置文件 肯定有拼写错误 现在应用程序在启动时崩溃 在线文档说设置位于 env LocalAppData Packages Microsoft WindowsTerminal 8wekyb3d8bbwe LocalState set
  • Node JS,延迟响应

    var http require http var s http createServer function req res res writeHead 200 Content Type text plain res write Hello
  • cookie 未在跨域上设置 - AngularJS 和 NodeJS/Express

    跨域请求时未设置 cookie 我的服务器在 localhost 8000 中运行 客户端在 localhost 9000 中运行 服务器nodejs express上的cors设置是 app use function req res ne
  • TypeError:使用react-create-app jest和enzyme进行测试时,dispatch不是一个函数

    我正在尝试对使用react create app 创建的新项目进行测试 现在似乎正在使用 React 16 和 Jest 3 据说有一些重大更改 或者可能是 enzime 我收到类似于这篇文章的错误TypeError 当我尝试使用 JEST
  • 在 OrientDB Studio 中显示节点标签

    我试图让 OrientDB Studio 显示一个字符串作为每个节点的标签 就像 Susheel Kumar 的屏幕截图所示 但是 当我运行 Susheel 的代码 在下面发布以供后代使用 时 所有节点都显示为由其 rid 字段标记 如以下
  • 打开 bootstrap.min.css 导致 VS2010 崩溃

    知道为什么打开 bootstrap min css 的缩小版本会导致 VS2010 崩溃吗 对于非缩小文件不会发生这种情况 我知道 我知道 一个有效的解决方案可能是 不要在 VS2010 中打开 bootstrap min css 这与我告
  • 谷歌地图 - 缩放时保持居中

    在 Google 地图中 我希望在放大或缩小时能够将地图中心保持在我所在位置的标记上 这是 Ingress 所做的事情 无论您在何处双击 或双击 或在何处捏合 地图都会保持以标记为中心 所以有可能 我现在想到的最好的是 google map
  • 使用具有不同参数的 Jackson for List 将 JSON 映射到 pojo

    JSON 格式 0 cast showname woh pagle type Episodes video src video mp4 DRM False 这里的问题是我遇到以下异常 org codehaus jackson map Jso