使用ObjectMapper把Json转换为复杂的实体类

ObjectMapper Json转换为复杂的实体类

实体类

主实体类* GetRigSmsResult* 里面的* smsContentList 是一个list类型的的 SmsContentSmsContent *集合。

/**
 *
 *
 * @author 李关钦
 * @version 2017年3月14日
 */
public class GetRigSmsResult {
    private String dataCoding;
    private String messageParts;
    private int pushFlag;
    private String receivePhoneNumber;
    private String receiveTime;
    private String sendPhoneNumber;
    private String sendTime;
    private String shortMessageId;
    private int state;
    @JsonProperty(value = "smsContent")
    private String smsContent;
    // @JsonIgnore
    private List<SmsContent> smsContentList;
    //getter、setter方法省略
}
/**
 * 组内短信的消息内容
 *
 * @author 李关钦
 * @version 2017年2月24日
 */
public class SmsContent {
    private String content;
    private String part;
    private String receiveTime;
    //getter、setter方法省略
}

使用ObjectMapper转换json为实体类

ObjectMapper mapper = new ObjectMapper();
String reqBody = mapper.writeValueAsString(param);
List<GetRigSmsResult> resultList =  mapper.readValue(respBody, new TypeReference<List<GetRigSmsResult>>() {  });

转换的时候使用new TypeReference<List<GetRigSmsResult>>() { }可以把含有list的嵌套对象也给成功转换。

objectmapper 嵌套json转对象报错

原因

是因为实体类对象没有加无参构造器

1、对于没有构造函数的java类,编译器会为其提供一个默认的无参构造函数;

2、如果显示的为类提供了构造函数,编译器就不会再给提供默认构造函数了;

3、ObjectMapper将JSON字符串转换为java对象的时候,需要调用类的无参构造函数(分配相关地址?)

4、如果一个类有带参构造函数,最好也为它提供一个无参构造函数,因为不知道什么地方可能就会用到

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • java中实体类和JSON对象之间相互转化

    在需要用到JSON对象封装数据的时候,往往会写很多代码,也有很多复制粘贴,为了用POJO的思想我们可以装JSON转化为实体对象进行操作 package myUtil; import java.io.IOException; import myProject.Student; import myProject.StudentList; import org.codehaus.jackson.map.ObjectMapper; import org.json.JSONArray; import or

  • java中用ObjectMapper类实现Json与bean的转换示例

    前言 ObjectMapper是jackson中的方法,本文主要给大家介绍了关于java中用ObjectMapper类实现Json与bean转换的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 一.将json字符串转为bean public class JsonToJavaBean { public static void main(String[] args) { String str="{\"student\":[{\"name\&q

  • 实例解析Json反序列化之ObjectMapper(自定义实现反序列化方法)

    对于服务器端开发人员而言,调用第三方接口获取数据,将其"代理"转化并返给客户端几乎是家常便饭的事儿.    一般情况下,第三方接口返回的数据类型是json格式,而服务器开发人员则需将json格式的数据转换成对象,继而对其进行处理并封装,以返回给客户端. 在不是特别考虑效率的情况下(对于搜索.缓存等情形可以考虑使用thrift和protobuffer),通常我们会选取jackson包中的ObjectMapper类对json串反序列化以得到相应对象.通常会选取readValue(Strin

  • java的Jackson框架实现轻易转换JSON

    Jackson可以轻松的将Java对象转换成json对象和xml文档,同样也可以将json.xml转换成Java对象. 相比json-lib框架,Jackson所依赖的jar包较少,简单易用并且性能也要相对高些.而且Jackson社区相对比较活跃,更新速度也比较快. 一.准备工作 1. 下载依赖库jar包 Jackson的jar all下载地址:http://jackson.codehaus.org/1.7.6/jackson-all-1.7.6.jar 然后在工程中导入这个jar包即可开始工作

  • Json字符串与Object、List、Map的互转工具类

    package com.cq2022.zago.base.util; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.io.StringWriter; import java.util.List; import java.util.Map; import org.codehaus.jackson.JsonFactory; import org.codehau

  • 使用ObjectMapper把Json转换为复杂的实体类

    ObjectMapper Json转换为复杂的实体类 实体类 主实体类* GetRigSmsResult* 里面的* smsContentList 是一个list类型的的 SmsContentSmsContent *集合. /** * * * @author 李关钦 * @version 2017年3月14日 */ public class GetRigSmsResult { private String dataCoding; private String messageParts; priv

  • java中map与实体类的相互转换操作

    java中map与实体类的相互转换 1. 在 pom.xml 中引入依赖包 <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.54</version> </dependency> 2. 在控制类中引入 import com.alibaba.fastjson.JSON; 3. 类型转

  • c# DataTable与不同结构实体类转换的方法实例

    在实际开发过程中,或者是第三方公司提供的数据表结构,与我们系统中的实体类字段不对应,遇到这样我们怎么处理呢?可能有人会说,在转换时创建一个实体对象,对表里的数据逐行遍历来实例化这个实体对象不就完了.的确没错,这方法可行,但是这个方法效率极低,遇到亿万数据的话那就要实例化亿万个对象,由此可见它的效率了.先看一下我的实体类 复制代码 代码如下: /// <summary>/// 具体的实体类,和数据表中不同/// </summary>public class Person{    [D

  • C#实体类转换的两种方式小结

    目录 C#实体类转换方式 以下提供两种方式 实现功能 开发环境 实现代码 C#实体类转为JSON字符串 总结 C#实体类转换方式 将一个实体类的数据赋值到另一个实体类中(亦或者实现深拷贝). 以下提供两种方式 一种是序列化 一种是泛型+反射 实现功能 两个实体类数据转换赋值 开发环境 开发工具: Visual Studio 2013 .NET Framework版本:4.5 实现代码 //学生类    private class Student {     public string name

  • 如何用ObjectMapper将复杂Map转换为实体类

    目录 ObjectMapper将复杂Map转为实体类 背景 1.使用ObjectMapper要添加的依赖是 2.将复杂Map开始转换 objectMapper 解析复杂json toMap ObjectMapper将复杂Map转为实体类 背景 用fastjson转换复杂Map是浅层的可以转 深层的转换为null.,这时候可以用jackson来转. 1.使用ObjectMapper要添加的依赖是 <!--添加jackson包--> <dependency> <groupId&g

  • springmvc接收json串,转换为实体类List方法

    开始我用List<泛型>接受json串,如下,结果list内并非泛型对象,而是JSONObject对象.这样在遍历的时候就报了转化异常的错误.我不知道为什么springmvc在处理这个的时候并没有将json对象转化为泛型对象(我认为应该能获取到,可能是配置问题或者使用不当导致的),这个错误用实际证明了java是假泛型. 如何解决呢,暂时有两种方案,第一种是使用json工具类转化json对象为泛型对象,第二种使用数组接受,然后将数组转化为list对象.代码如下下.如果哪天找到了更好的解决方案,或

  • java中实体类转Json的2种方法

    首先申明所需jar包: ezmorph-1.0.6.jar jackson-all-1.7.6.jar jsoup-1.5.2.jar 一.创建一个实体类Emp. package com.hyx.entity; public class Emp { private Integer id; private String name; private Integer dptNo; private String gender; private String duty; public Integer ge

  • 如何将Object类转换为实体类

    目录 将Object类转换为实体类 问题描述 问题原因 解决办法 实体类之间的相互转换 将Object类转换为实体类 问题描述 在用SpringBoot写controller的时候,需要接受一个map的Object,之后要把Object转为特定的类,代码如下: public boolean postArticle(@RequestBody Map<String, Object> map) {         ArticleInfo articleInfo = (ArticleInfo) map

  • ASP.NET JSON字符串与实体类的互转换示例代码

    还是先封装一个类吧! 这个类网上都可以找到的!有个这个类,一切都将变得简单了,哈哈. 复制代码 代码如下: using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Runtime.Serialization.Json;using System.ServiceModel.Web;///记得引用这个命名空间using System.IO;using System.Tex

  • ASP.NET自带对象JSON字符串与实体类的转换

    关于JSON的更多介绍,请各位自行google了解!如果要我写的话,我也是去Google后copy!嘿嘿,一直以来很想学习json,大量的找资料和写demo,总算有点了解! 切入正题! 还是先封装一个类吧! 这个类网上都可以找到的!有个这个类,一切都将变得简单了,哈哈. using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Runtime.Serializ

随机推荐