Java的Jackson库中复杂对象集合的几种简单转换

 更新时间:2017年02月08日 11:56:00   作者:renjiaqi_500Server  
本文主要介绍了Java的Jackson库中复杂对象集合的几种简单转换。具有很好的参考价值,下面跟着小编一起来看下吧

话不多说,请看代码:

package com; 
import java.io.BufferedReader; 
import java.io.ByteArrayInputStream; 
import java.io.IOException; 
import java.io.InputStreamReader; 
import java.util.List; 
import com.fasterxml.jackson.core.JsonParseException; 
import com.fasterxml.jackson.databind.JavaType; 
import com.fasterxml.jackson.databind.JsonMappingException; 
import com.fasterxml.jackson.databind.ObjectMapper; 
/** 
 * jackson 复杂 对象集合 的几种简单转换 
 * @author lenovo 
 * 
 * @param <T> 
 */ 
public class Main<T> 
{ 
 static ObjectMapper mapper = new ObjectMapper(); 
 public static void main(String[] args) throws JsonParseException, 
   JsonMappingException, IOException 
 { 
  String josn = "{\"UserID\":1,\"LoginName\":\"唐工\",\"Truename\":\"超级\",\"Nickname\":null,\"LoginPwd\":\"E10ADC3949BA59ABBE56E057F20F883E\",\"QQ\":\"\",\"Phone\":\"\",\"Email\":null,\"Remark\":\"\",\"Account_Non_Locked\":0,\"Telelephone\":null,\"IsDelete\":0}"; 
  User u = mapper.readValue(josn, User.class); 
  // User u=new Main<User>().jsonStreamConverObject(josn, User.class); 
  System.out.println("转对象:" + u); 
  // 转集合 
  String josn2 = "[{\"UserID\":1,\"LoginName\":\"唐工\",\"Truename\":\"超级\",\"Nickname\":null,\"LoginPwd\":\"E10ADC3949BA59ABBE56E057F20F883E\",\"QQ\":\"\",\"Phone\":\"\",\"Email\":null,\"Remark\":\"\",\"Account_Non_Locked\":0,\"Telelephone\":null,\"IsDelete\":0}]"; 
  JavaType javaType = mapper.getTypeFactory().constructParametricType( 
    List.class, User.class); 
  List<User> me = mapper.readValue(josn2, javaType); 
  System.out.println("转集合me:" + me); 
  // 对象里有 集合 转换 
  String josn3 = "{\"UserID\":1,\"LoginName\":\"唐工\",\"Truename\":\"超级\",\"Nickname\":null,\"LoginPwd\":\"E10ADC3949BA59ABBE56E057F20F883E\",\"QQ\":\"\",\"Phone\":\"\",\"Email\":null,\"Remark\":\"\",\"Account_Non_Locked\":0,\"Telelephone\":null,\"IsDelete\":0,\"RoleList\":[{\"Roleid\":0,\"Name\":\"超级管理员\",\"Show_Name\":\"超级管理员\",\"Remark\":null,\"Type\":1}]}"; 
  User u3 = mapper.readValue(josn3, User.class); // 简单方式 
  // User u3=new Main<User>().jsonConverObject(josn3, User.class); 流方式 
  System.out.println("转对象里有集合u3:" + u3); 
  // 集合 对象 集合 转换 
  String josn4 = "[{\"UserID\":1,\"LoginName\":\"唐工\",\"Truename\":\"超级\",\"Nickname\":null,\"LoginPwd\":\"E10ADC3949BA59ABBE56E057F20F883E\",\"QQ\":\"\",\"Phone\":\"\",\"Email\":null,\"Remark\":\"\",\"Account_Non_Locked\":0,\"Telelephone\":null,\"IsDelete\":0,\"RoleList\":[{\"Roleid\":0,\"Name\":\"超级管理员\",\"Show_Name\":\"超级管理员\",\"Remark\":null,\"Type\":1}]},{\"UserID\":2,\"LoginName\":\"唐工\",\"Truename\":\"超级\",\"Nickname\":null,\"LoginPwd\":\"E10ADC3949BA59ABBE56E057F20F883E\",\"QQ\":\"\",\"Phone\":\"\",\"Email\":null,\"Remark\":\"\",\"Account_Non_Locked\":0,\"Telelephone\":null,\"IsDelete\":0,\"RoleList\":[{\"Roleid\":0,\"Name\":\"超级管理员\",\"Show_Name\":\"超级管理员\",\"Remark\":null,\"Type\":1}]}]"; 
  JavaType javaType4 = mapper.getTypeFactory().constructParametricType( 
    List.class, User.class); 
  List<User> list = mapper.readValue(josn4, javaType4); 
  System.out.println("集合里是对象 对象里有集合转换:" + list); 
 } 
 /*** 
  * 转对象 
  * @param josn 
  * @param clz 
  * @return 
  */ 
 public T jsonStreamConverObject(String josn, Class<T> clz) 
 { 
  T t = null; 
  // ObjectMapper jacksonMapper = new ObjectMapper(); 
  InputStreamReader in = new InputStreamReader(new ByteArrayInputStream( 
    josn.getBytes())); 
  BufferedReader streamReader = new BufferedReader(in); 
  StringBuilder buff = new StringBuilder(); 
  String inputStr; 
  try 
  { 
   while ((inputStr = streamReader.readLine()) != null) 
    buff.append(inputStr); 
   // ObjectMapper mapper = new ObjectMapper(); 
   t = mapper.readValue(buff.toString(), clz); 
  } catch (IOException e) 
  { 
   e.printStackTrace(); 
  } 
  return t; 
 } 
 /*** 
  * 转对象 
  * @param josn 
  * @param clz 
  * @return 
  */ 
 public T jsonConverObject(String josn, Class<T> clz) 
 { 
  T t = null; 
  try 
  { 
   t = mapper.readValue(josn, clz); 
  } catch (JsonParseException e) 
  { 
   e.printStackTrace(); 
  } catch (JsonMappingException e) 
  { 
   e.printStackTrace(); 
  } catch (IOException e) 
  { 
   e.printStackTrace(); 
  } 
  return t; 
 } 
 /** 
  * 转集合 
  * @param josn 
  * @param clz 
  * @return 
  */ 
 public List<T> jsonConverList(String josn, Class<T> clz) 
 { 
  List<T> me = null; 
  try 
  { 
   // jacksonMapper 
   // .disable(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES); 
   // jacksonMapper.enableDefaultTyping(); 
   // jacksonMapper.setVisibility(JsonMethod.FIELD,JsonAutoDetect.Visibility.ANY); 
   // jacksonMapper.configure(SerializationConfig.Feature.INDENT_OUTPUT, 
   // false);//格式化 
   // jacksonMapper.setSerializationInclusion(JsonSerialize.Inclusion.NON_NULL); 
   // jacksonMapper.configure(SerializationConfig.Feature.FAIL_ON_EMPTY_BEANS, 
   // false); 
   JavaType javaType = mapper.getTypeFactory() 
     .constructParametricType(List.class, clz);// clz.selGenType().getClass() 
   me = mapper.readValue(josn, javaType); 
  } catch (JsonParseException e) 
  { 
   e.printStackTrace(); 
  } catch (JsonMappingException e) 
  { 
   e.printStackTrace(); 
  } catch (IOException e) 
  { 
   e.printStackTrace(); 
  } 
  return me; 
 } 
} 
/** 
 * output: 
 * 转对象:User [UserID=1, LoginName=唐工, Truename=超级, Nickname=null, LoginPwd=E10ADC3949BA59ABBE56E057F20F883E, QQ=, Phone=, Email=null, Remark=, Account_Non_Locked=0, Telelephone=null, Indate=null, IsDelete=0, RoleList=null] 
 * 转集合me:[User [UserID=1, LoginName=唐工, Truename=超级, Nickname=null, LoginPwd=E10ADC3949BA59ABBE56E057F20F883E, QQ=, Phone=, Email=null, Remark=, Account_Non_Locked=0, Telelephone=null, Indate=null, IsDelete=0, RoleList=null]] 
 * 转对象里有集合u3:User [UserID=1, LoginName=唐工, Truename=超级, Nickname=null, LoginPwd=E10ADC3949BA59ABBE56E057F20F883E, QQ=, Phone=, Email=null, Remark=, Account_Non_Locked=0, Telelephone=null, Indate=null, IsDelete=0, RoleList=[Role [Roleid=0, Name=超级管理员, Show_Name=超级管理员, Remark=null, Type=1]]] 
 * 集合里是对象 对象里有集合转换:[User [UserID=1, LoginName=唐工, Truename=超级, Nickname=null, LoginPwd=E10ADC3949BA59ABBE56E057F20F883E, QQ=, Phone=, Email=null, Remark=, Account_Non_Locked=0, Telelephone=null, Indate=null, IsDelete=0, RoleList=[Role [Roleid=0, Name=超级管理员, Show_Name=超级管理员, Remark=null, Type=1]]], User [UserID=2, LoginName=唐工, Truename=超级, Nickname=null, LoginPwd=E10ADC3949BA59ABBE56E057F20F883E, QQ=, Phone=, Email=null, Remark=, Account_Non_Locked=0, Telelephone=null, Indate=null, IsDelete=0, RoleList=[Role [Roleid=0, Name=超级管理员, Show_Name=超级管理员, Remark=null, Type=1]]]] 
 * */ 

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持脚本之家!

相关文章

  • SWT JFace Bookmark 制作

    SWT JFace Bookmark 制作

    SWT JFace Bookmark 制作
    2009-06-06
  • mybatis向数据库里插入记录后自动返回记录ID问题

    mybatis向数据库里插入记录后自动返回记录ID问题

    本文介绍了在接手项目时,对一个业务处理逻辑进行重构和性能优化的经历,作者提到,性能问题可能是导致bug的一个重要原因,作者提到,在以前的.NET项目中,插入记录后系统会自动刷新实体类,为其中的主键ID赋值,而SpringBoot项目mybatis也可以通过指定主键来优化代码
    2025-01-01
  • Spring Boot集成springfox-swagger2构建restful API的方法教程

    Spring Boot集成springfox-swagger2构建restful API的方法教程

    这篇文章主要给大家介绍了关于Spring Boot集成springfox-swagger2构建restful API的相关资料,文中介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面跟着小编一起来学习学习吧。
    2017-06-06
  • 解决rocketmq-client查询手动发送消息异常问题

    解决rocketmq-client查询手动发送消息异常问题

    这篇文章主要介绍了解决rocketmq-client查询手动发送消息异常问题,具有很好的参考价值,希望对大家大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • SpringBoot+Vue实现EasyPOI导入导出的方法详解

    SpringBoot+Vue实现EasyPOI导入导出的方法详解

    项目开发过程中,很大的需求都有 导入导出功能。本文将利用SpringBoot+Vue实现EasyPOI导入导出功能,感兴趣的可以了解一下
    2022-08-08
  • JavaWeb开发入门第二篇Tomcat服务器配置讲解

    JavaWeb开发入门第二篇Tomcat服务器配置讲解

    JavaWeb开发入门第二篇主要介绍了Tomcat服务器配置的方法教大家如何使用Tomcat服务器,感兴趣的小伙伴们可以参考一下
    2016-04-04
  • Java实现Token登录验证的项目实践

    Java实现Token登录验证的项目实践

    本文主要介绍了Java实现Token登录验证的项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03
  • Java编程实现生成给定范围内不重复随机数的方法小结

    Java编程实现生成给定范围内不重复随机数的方法小结

    这篇文章主要介绍了Java编程实现生成给定范围内不重复随机数的方法,结合实例形式总结分析了java基于数学运算与判断实现不重复随机数的生成功能,需要的朋友可以参考下
    2017-07-07
  • java实现打砖块小游戏

    java实现打砖块小游戏

    这篇文章主要为大家详细介绍了java实现打砖块小游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-05-05
  • SpringBoot如何实现starter原理详解

    SpringBoot如何实现starter原理详解

    这篇文章主要介绍了SpringBoot如何实现starter原理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-06-06

最新评论