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

 更新时间:2021年08月17日 11:48:35   作者:热血蜗牛  
这篇文章主要介绍了使用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、如果一个类有带参构造函数,最好也为它提供一个无参构造函数,因为不知道什么地方可能就会用到

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

相关文章

  • Java单元测试Mockito的使用详解

    Java单元测试Mockito的使用详解

    Mockito是一个强大的mock工具,本文将重点讲述Mockito的基本使用及注意事项,以及Controller测试用例,本文通过示例代码给大家介绍的非常详细,需要的朋友参考下吧
    2021-07-07
  • 在springboot3微项目中如何用idea批量创建单元测试逻辑

    在springboot3微项目中如何用idea批量创建单元测试逻辑

    这篇文章主要介绍了在SpringBoot3项目中使用IntelliJIDEA批量创建单元测试包括准备工作(确保项目配置正确,添加测试依赖),使用IntelliJIDEA创建测试,感兴趣的朋友一起看看吧
    2024-10-10
  • springboot中poi使用操作方法

    springboot中poi使用操作方法

    在项目中,有很多对excel的操作,大都数时候我们都会使用poi工具类,本文将介绍poi的一些使用方法,感兴趣的朋友跟随小编一起看看吧
    2023-08-08
  • java中stream的peek()用法详解

    java中stream的peek()用法详解

    这篇文章主要介绍了java中stream的peek()用法详解,peek的作用是
    改变元素的内部状态,对每个object执行 saveInfomation(object, params),然后把结果收集到一个 List 里,这里涉及到了最终操作,需要的朋友可以参考下
    2024-01-01
  • 一文详解spring注解配置bean的初始化方法和销毁方法

    一文详解spring注解配置bean的初始化方法和销毁方法

    本篇我们讲解下spring项目中如何为bean指定初始化方法和销毁方法。当spring完成bean的属性赋值之后,就会执行bean的初始化方法,而当spring要销毁bean实例的时候,也会调用bean的销毁方法。文中有详细的代码实例,需要的朋友可以参考下
    2023-05-05
  • Java中MapStruct使用方法解析

    Java中MapStruct使用方法解析

    这篇文章主要介绍了Java中MapStruct使用方法解析,接受请求参数都会使用一个vo类,这个vo类里封装了所有需要接受的参数,然后对参数进行业务逻辑处理,处理完后会持久化处理, 使用MapStruct可以快速帮你解决转换工作,需要的朋友可以参考下
    2023-10-10
  • HandlerMapping之RequestMappingHandlerMapping作用详解

    HandlerMapping之RequestMappingHandlerMapping作用详解

    这篇文章主要介绍了HandlerMapping之RequestMappingHandlerMapping作用详解,HandlerMapping是用来寻找Handler的,并不与Handler的类型或者实现绑定,而是根据需要定义的,那么为什么要单独给@RequestMapping实现一个HandlerMapping,需要的朋友可以参考下
    2023-10-10
  • Spring Cloud 动态刷新配置信息教程详解

    Spring Cloud 动态刷新配置信息教程详解

    这篇文章主要介绍了Spring Cloud 动态刷新配置信息的教程,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-06-06
  •  java中StopWatch的使用详解

     java中StopWatch的使用详解

    本文主要介绍了 java中StopWatch的使用详解,stopWatch使用它可直观的输出代码执行耗时,以及执行时间百分比,非常具有实用价值,需要的朋友可以参考下
    2023-05-05
  • Java语言打印九九乘法表

    Java语言打印九九乘法表

    这篇文章主要为大家详细介绍了Java语言打印九九乘法表的相关代码,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-06-06

最新评论