如何使用jackson在java中将json转换为POJO

2023-11-23

我使用的是 spring 3.1.2,我需要将 json 对象解析为 POJO。 这是我需要解析的 json:

{
"Person" : {
    "id" : "2"
 },
"Dog" : {
    "dateOfBirth" : "2012-08-20 00:00:00",
    "price" : "10.00"
    }
}

我需要将这个 json 对象(由两个对象组合而成)转换为一个 POJO,如下所示:

public class MyClass{
     public MyClass(){}
     public MyClass(String personsId, TimeStamp dogsDateOfBirth, BigDecimal dogsPrice){
     .... // assign each parameter to the appropriate field
     }
     private String personsId;
     private TimeStamp dogsDateOfBirth;
     private BigDecimal dogsPrice;
     //... Getters and Setters for each field
}

为此,我用了ObjectMapper mapper = new ObjectMapper();现在,由于我有几个 json 对象,我的代码如下所示:

    String json = ... ;// A json with several objects as above
    JsonNode tree = mapper.readTree(json);
    Iterator<JsonNode> iter = tree.path("data").getElements();
    while (iter.hasNext()){
        JsonNode node = iter.next();
        MyClass myClass = mapper.readValue(node, MyClass.class);
        ... // do something with myClass object
    }

当我运行此命令时 - 我收到以下异常:

org.codehaus.jackson.map.JsonMappingException: No suitable constructor found for type [simple type, class ...MyClass]: can not instantiate from JSON object (need to add/enable type information?)

我尝试创建一个简单的 POJO -Person:

public class Person{
        private String id;          
        public Person(){}
        public Person(String id){
            this.id = id;
         }
         ... // Getter and Setter
    }

并执行以下操作:

Person person = mapper.readValue(node.path("Person"), Person.class);

我得到这个(相同的)异常:

org.codehaus.jackson.map.JsonMappingException: No suitable constructor found for type [simple type, class ...Person]: can not instantiate from JSON object (need to add/enable type information?)

我尝试阅读一些有关类型信息- 但不明白它对我有什么帮助。

如何将此 json 转换为我的 POJO?

Thanks.


我所做的是这样的: 我创建了一个新类,其中包含 Person 对象和 Dog 对象,这些类需要是静态的(我发现它here)。 以下是课程:

public static class MyNewClass{
    private Person person;
    private Dog dog;
    ... // two constructors and getters and setters

 public static class Person{
     private String id;
     ... // two constructors and getters and setters
 }
 public static class Dog{
     private String dateOfBirth;
     private String price;
     ... // two constructors and getters and setters
  }
}

现在我的代码如下所示:

    JsonNode tree = mapper.readTree(jsonString);
    Iterator<JsonNode> iter = tree.path("data").getElements();
    while (iter.hasNext()){
        JsonNode node = iter.next();
        Person person = mapper.readValue(node.path("Person"), Person.class);
        Dog dog = mapper.readValue(node.path("Dog"), Dog.class);
        MyNewClass myNewClass = new MyNewClass(person , dog);
        ... //Do something with it
    }

我仍然想在不创建这两个对象( Person 和 Dog )的情况下完成它 - 现在已经足够好了 - 但如果有人有想法 - 我想在这里!

Thanks.

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

如何使用jackson在java中将json转换为POJO 的相关文章

随机推荐

  • 有没有办法在 C# 中比较两个列表[关闭]

    Closed 这个问题需要调试细节 目前不接受答案 我通过以下方式比较两个列表 var listOne new List
  • 我应该在 Struts2 视图层中检索数据库记录吗?

    我有一个编辑页面 我想在其中检索subjects and levels从数据库中显示并显示为用户编辑的选择选项course 当表单提交时 它会发出一个新的请求 用户输入被捕获课程Bean带有 XML 验证 当XML验证失败时 它将转发课程B
  • 是否有任何 C# 框架或代码来解析 *blg 性能计数器日志文件?

    任务不是在我的 NET 应用程序中收集性能计数器数据 而是打开已经准备好的二进制日志文件 blg 我知道 MS SQL Profiler NET 应用程序 可以解析二进制日志 据我所知 blg 文件格式似乎是专有的 并且规范并未公开发布 也
  • 为什么我应该关心轻量级标签与带注释的标签?

    去年 我从 Subversion 转向 Git 作为我的日常 VCS 并且仍在努力掌握 Git think 的精髓 最近困扰我的是 轻量级 与带注释和签名的标签 似乎人们普遍认为 在所有实际用途中 带注释的标签都优于轻量级标签 但我找到的解
  • 为 64 位 Windows 10 PC 下载并安装 PyBluez?

    我正在尝试将蓝牙与 python 一起使用 并且遇到了一个模块 pybluez 就在那时 我尝试通过运行 pip install pybluez 来安装它 该包已找到并下载 但在运行 python setup py Egg info 时出现
  • 从文件中提取快速傅立叶变换数据

    我正在构建一个应该在服务器上运行并分析声音文件的工具 我想在 Ruby 中执行此操作 因为我的所有其他工具也是用 Ruby 编写的 但我很难找到实现这一目标的好方法 我发现的很多例子都是在做可视化和图形化的东西 我只需要 FFT 数据 仅此
  • 如何使用 Selenium/PhantomJS 列出加载的资源?

    我想加载一个网页并列出该页面的所有加载资源 javascript images css 我使用此代码来加载页面 from selenium import webdriver driver webdriver PhantomJS driver
  • 如果在 WHERE 子句中用参数(具有相同值)替换常量,为什么查询会急剧减慢?

    我有一个递归查询 如果WHERE子句包含一个常量 但如果我用具有相同值的参数替换该常量 则会变得非常慢 查询 1 使用常量 WITH Hierarchy Id ParentId Data Depth AS SELECT Id ParentI
  • Java Swing:开源甘特图库[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我正在为 Java Swing 寻找一个好的开源甘特图库 我尝试了 JFreeChart 但它无法绘制子任务 我尝试过斯威夫特甘特图也 它可以绘制子
  • 处理 jquery 自动完成中的无结果

    嘿 当用户当前查询没有结果时 我正在尝试返回消息 我知道我需要点击 keyup 事件 但看起来插件正在使用它 这个问题确实已经过时了 无论如何我正在使用新的 jQuery UI 1 8 16 自动完成现在非常不同 http jqueryui
  • 从 .txt 文件读取和显示数据

    如何读取和显示 txt 文件中的数据 BufferedReader in new BufferedReader new FileReader
  • 使用 Ruby 执行命令行时如何避开竖线?

    我在 Windows 中输入以下命令行 dir b ruby ne f chomp File read f each line line print f if line helloworld 此行用于查找当前目录下的所有文件hellowor
  • 了解 ISO 8583 消息日志

    我在以下位置阅读了有关 ISO 8583 消息传递的内容 WIKI and 代码项目 我理解 ISO 8583 消息基本上可以分为 3 部分 MTI 消息类型指示器 1 1 版本 1 2 消息类 1 3 留言功能 1 4 消息来源 Bitm
  • 使用Lua将0秒格式化为00:00:00

    我正在尝试将持续时间 以秒为单位 格式化为时间 并且得到的结果表明我应该在某个地方考虑 一个纪元 我期望os date X 0 生成 00 00 00 但它返回 20 00 00 以及日期值 12 31 69 不过我不需要日历日期 是否有一
  • WCF通信异常

    接收 HTTP 响应时发生错误http 生产 服务 AccountService svc 这可能是由于 服务端点绑定不使用 HTTP 协议 这可以 也可能是由于服务器中止 HTTP 请求上下文 可能是由于服务关闭 查看服务器日志了解更多信息
  • 为什么不能声明嵌套类类型的内联静态数据成员?

    struct sa struct sb int a 123 inline static sb b 上面的代码会产生一个错误 main cpp 25 20 error default member initializer for sa sb
  • 来自 Windows 的低级键盘输入

    哪些 win32 调用可用于从 Windows 服务全局检测按键事件 不仅仅是 1 个窗口 我想在每次按下按键时收到一条消息 您想使用 Win32 Hooks 特别是键盘挂钩 你可以在这里读更多关于它的内容 您想要的挂钩类型是 WH KEY
  • Python从py模块读取所有导入语句的简单方法

    我正在尝试创建一个辅助函数来读取文件并模拟单元测试的所有导入 我必须读取文件与导入 因为我在 python 路径上没有这些东西 示例代码 module py import com stackoverflow question from co
  • cmake:使用多个输出配置

    我正忙于将构建过程从 msbuild 移植到 cmake 以便更好地处理 gcc 工具链 它为我正在做的一些数字工作生成更快的代码 现在 我希望 cmake 生成多个版本的输出 例如一个版本使用 sse2 另一个版本使用 x64 等等 然而
  • 如何使用jackson在java中将json转换为POJO

    我使用的是 spring 3 1 2 我需要将 json 对象解析为 POJO 这是我需要解析的 json Person id 2 Dog dateOfBirth 2012 08 20 00 00 00 price 10 00 我需要将这个