如何使用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 的相关文章

  • 我对线程失去了理智

    我想要这个类的对象 public class Chromosome implements Runnable Comparable
  • 使用把手显示来自 parse.com 的 json 响应

    我想将 json 响应传递给车把 我已经查看了解析文档和 stackoverflow 问题 但我似乎无法弄清楚这一点 这是回应 results address 755 W Yale createdAt 2013 02 09T01 12 15
  • Java中Gson、JsonElement、String比较

    好吧 我想知道这可能非常简单和愚蠢 但在与这种情况作斗争一段时间后 我不知道发生了什么 我正在使用 Gson 来处理一些 JSON 元素 在我的代码中的某个位置 我将 JsonObject 的 JsonElements 之一作为字符串获取
  • java中如何知道一条sql语句是否执行了?

    我想知道这个删除语句是否真的删除了一些东西 下面的代码总是执行 else 是否删除了某些内容 执行此操作的正确方法是什么 public Deleter String pname String pword try PreparedStatem
  • getCurrentSession 在网络中休眠

    我正在使用 hibernate 和 jsp servlet 编写一个基于 Web 的应用程序 我读过有关sessionFactory getCurrentSession and sessionFactory openSession方法 我知
  • GWT、Maven、Spring - 在 Maven 构建上获取 com.thoughtworks.qdox.parser.ParseException:语法错误

    我正在尝试集成此演示中的代码 http code google com p gwt spring starter app http code google com p gwt spring starter app 进入我的主要 Spring
  • 为什么 jar 执行的通配符在 docker CMD 中不起作用?

    我有一个Dockerfile与以下CMD启动我的 Spring Boot 应用程序 FROM java 8 jre CMD java jar app file jar 当我尝试从创建的图像启动容器时 我得到 Error Unable to
  • JAXB - 忽略元素

    有什么方法可以忽略 Jaxb 解析中的元素吗 我有一个很大的 XML 文件 如果我可以忽略其中一个大而复杂的元素 那么它的解析速度可能会快很多 如果它根本无法验证元素内容并解析文档的其余部分 即使该元素不正确 那就更好了 例如 这应该只生成
  • ThreeTen 向后移植与 JSR-310 的比较

    由于某些原因 我们现在无法使用 java 8 我们仍然停留在 java 7 上 不过 我想使用新的JSR 310 date time APIs现在 使用官方向后移植 ThreeTen http www threeten org threet
  • 在 Spring 中为 @Pathvariable 添加类级别验证

    在发布这个问题之前 我已经做了很多研究并尝试了很多可用的解决方案 这是我陷入的棘手情况 我有一个 Spring 控制器 它有多个请求映射 它们都有 PathVariables 控制器如下所示 Controller EnableWebMvc
  • 使用 JDBC 连接到 PostgreSql 的本地实例

    我在 Linux 机器上有一个正在运行的 PostgreSql 本地实例 当我使用psql来自 shell 的命令我成功登录 没有任何问题 我需要通过 JDBC 连接到 PostgreSql 但我不知道我到底应该传递什么url参数为Driv
  • 为什么解析这个 JSON 会抛出错误?

    我正在尝试解析这个 JSONObject query yahoo count 1 results rate Name USD INR id USDINR Time 12 19pm Date 10 31 2015 Bid 65 405 Ask
  • 无需递归即可对可观察结果进行分页 - RxJava

    我有一个非常标准的 API 分页问题 您可以通过一些简单的递归来处理 这是一个捏造的例子 public Observable
  • 按降序排序映射java8 [重复]

    这个问题在这里已经有答案了 private static
  • 如何向页面添加 HTML 页眉和页脚?

    如何使用 itext 从 html 源添加标题到 pdf 目前 我们已经扩展了 PdfPageEventHelper 并重写了这些方法 工作正常 但当我到达 2 个以上页面时 它会抛出 RuntimeWorkerException Over
  • Spring Boot 中的 JSTL 支持

    虽然我知道有JSP 支持中的一些限制 http docs spring io spring boot docs current reference html boot features developing web applications
  • Azure Java SDK:ServiceException:ForbiddenError:

    尝试了基本位置检索器代码 如下所示 String uri https management core windows net String subscriptionId XXXXXXXX 5fad XXXXXX 9dfa XXXXXX St
  • 什么是 Java2D 处理程序线程?

    我创建了一个使用 Hibernate 的示例 java 应用程序 当我进行线程转储时 我观察到一个名为 Java2D Disposer 的奇怪线程 有人能告诉我该线程的功能吗 AWT 系统中的某些实体需要最终确定以释放资源 最突出的例子是j
  • 使用 DBCP 配置 Tomcat

    在闲置一段时间 几个小时 后 我们收到了 CommunicationsException 来自 DBCP 错误消息 在异常中 位于这个问题的末尾 但我没有看到任何配置文件中定义的 wait timeout 我们应该看哪里 在 tomcat
  • 设置 TreeSet 的大小

    有没有办法像数组一样对 Java 集合中的 TreeSet 进行大小限制 例如我们在数组中 anArray new int 10 数组具有固定长度 在创建数组时必须指定该长度 A TreeSet当您向其中添加元素时会自动增长 您无法设置其大

随机推荐

  • 有没有办法在 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 我需要将这个