jackson 复杂对象集合 的几种简单转换

jackson 复杂对象集合 的几种简单转换

[java] view plain copy 在CODE上查看代码片派生到我的代码片
    1. package com;  
    2.   
    3. import java.io.BufferedReader;  
    4. import java.io.ByteArrayInputStream;  
    5. import java.io.IOException;  
    6. import java.io.InputStreamReader;  
    7. import java.util.List;  
    8.   
    9. import com.fasterxml.jackson.core.JsonParseException;  
    10. import com.fasterxml.jackson.databind.JavaType;  
    11. import com.fasterxml.jackson.databind.JsonMappingException;  
    12. import com.fasterxml.jackson.databind.ObjectMapper;  
    13. /** 
    14.  * jackson 复杂 对象集合 的几种简单转换 
    15.  * @author lenovo 
    16.  * 
    17.  * @param <T> 
    18.  */  
    19. public class Main<T>  
    20. {  
    21.     static ObjectMapper mapper = new ObjectMapper();  
    22.   
    23.     public static void main(String[] args) throws JsonParseException,  
    24.             JsonMappingException, IOException  
    25.     {  
    26.   
    27.         String josn = "{\"UserID\":1,\"LoginName\":\"唐工\",\"Truename\":\"超级\",\"Nickname\":null,\"LoginPwd\":\"E10ADC3949BA59ABBE56E057F20F883E\",\"QQ\":\"\",\"Phone\":\"\",\"Email\":null,\"Remark\":\"\",\"Account_Non_Locked\":0,\"Telelephone\":null,\"IsDelete\":0}";  
    28.         User u = mapper.readValue(josn, User.class);  
    29.         // User u=new Main<User>().jsonStreamConverObject(josn, User.class);  
    30.         System.out.println("转对象:" + u);  
    31.   
    32.         // 转集合  
    33.         String josn2 = "[{\"UserID\":1,\"LoginName\":\"唐工\",\"Truename\":\"超级\",\"Nickname\":null,\"LoginPwd\":\"E10ADC3949BA59ABBE56E057F20F883E\",\"QQ\":\"\",\"Phone\":\"\",\"Email\":null,\"Remark\":\"\",\"Account_Non_Locked\":0,\"Telelephone\":null,\"IsDelete\":0}]";  
    34.         JavaType javaType = mapper.getTypeFactory().constructParametricType(  
    35.                 List.class, User.class);  
    36.         List<User> me = mapper.readValue(josn2, javaType);  
    37.         System.out.println("转集合me:" + me);  
    38.   
    39.         // 对象里有 集合 转换  
    40.         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}]}";  
    41.   
    42.         User u3 = mapper.readValue(josn3, User.class); // 简单方式  
    43.         // User u3=new Main<User>().jsonConverObject(josn3, User.class); 流方式  
    44.         System.out.println("转对象里有集合u3:" + u3);  
    45.   
    46.         // 集合 对象 集合 转换  
    47.         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}]}]";  
    48.         JavaType javaType4 = mapper.getTypeFactory().constructParametricType(  
    49.                 List.class, User.class);  
    50.         List<User> list = mapper.readValue(josn4, javaType4);  
    51.         System.out.println("集合里是对象 对象里有集合转换:" + list);  
    52.   
    53.     }  
    54.   
    55.     /*** 
    56.      * 转对象 
    57.      * @param josn 
    58.      * @param clz 
    59.      * @return 
    60.      */  
    61.     public T jsonStreamConverObject(String josn, Class<T> clz)  
    62.     {  
    63.   
    64.         T t = null;  
    65.         // ObjectMapper jacksonMapper = new ObjectMapper();  
    66.         InputStreamReader in = new InputStreamReader(new ByteArrayInputStream(  
    67.                 josn.getBytes()));  
    68.         BufferedReader streamReader = new BufferedReader(in);  
    69.         StringBuilder buff = new StringBuilder();  
    70.         String inputStr;  
    71.         try  
    72.         {  
    73.             while ((inputStr = streamReader.readLine()) != null)  
    74.                 buff.append(inputStr);  
    75.             // ObjectMapper mapper = new ObjectMapper();  
    76.             t = mapper.readValue(buff.toString(), clz);  
    77.   
    78.         } catch (IOException e)  
    79.         {  
    80.   
    81.             e.printStackTrace();  
    82.         }  
    83.   
    84.         return t;  
    85.     }  
    86.   
    87.     /*** 
    88.      * 转对象 
    89.      * @param josn 
    90.      * @param clz 
    91.      * @return 
    92.      */  
    93.     public T jsonConverObject(String josn, Class<T> clz)  
    94.     {  
    95.   
    96.         T t = null;  
    97.         try  
    98.         {  
    99.             t = mapper.readValue(josn, clz);  
    100.         } catch (JsonParseException e)  
    101.         {  
    102.             e.printStackTrace();  
    103.         } catch (JsonMappingException e)  
    104.         {  
    105.             e.printStackTrace();  
    106.         } catch (IOException e)  
    107.         {  
    108.             e.printStackTrace();  
    109.         }  
    110.   
    111.         return t;  
    112.     }  
    113.   
    114.     /** 
    115.      * 转集合 
    116.      * @param josn 
    117.      * @param clz 
    118.      * @return 
    119.      */  
    120.     public List<T> jsonConverList(String josn, Class<T> clz)  
    121.     {  
    122.   
    123.         List<T> me = null;  
    124.         try  
    125.         {  
    126.             // jacksonMapper  
    127.             // .disable(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES);  
    128.             // jacksonMapper.enableDefaultTyping();  
    129.             // jacksonMapper.setVisibility(JsonMethod.FIELD,JsonAutoDetect.Visibility.ANY);  
    130.             // jacksonMapper.configure(SerializationConfig.Feature.INDENT_OUTPUT,  
    131.             // false);//格式化  
    132.             // jacksonMapper.setSerializationInclusion(JsonSerialize.Inclusion.NON_NULL);  
    133.             // jacksonMapper.configure(SerializationConfig.Feature.FAIL_ON_EMPTY_BEANS,  
    134.             // false);  
    135.   
    136.             JavaType javaType = mapper.getTypeFactory()  
    137.                     .constructParametricType(List.class, clz);// clz.selGenType().getClass()  
    138.   
    139.             me = mapper.readValue(josn, javaType);  
    140.         } catch (JsonParseException e)  
    141.         {  
    142.             e.printStackTrace();  
    143.         } catch (JsonMappingException e)  
    144.         {  
    145.             e.printStackTrace();  
    146.         } catch (IOException e)  
    147.         {  
    148.             e.printStackTrace();  
    149.         }  
    150.   
    151.         return me;  
    152.     }  
    153. }  
    154.   
    155. /** 
    156.  * output: 
    157.  * 转对象: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] 
    158.  * 转集合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]] 
    159.  * 转对象里有集合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]]] 
    160.  * 集合里是对象 对象里有集合转换:[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]]]] 
    161.  
    162.  * */ 

转载于:https://www.cnblogs.com/renjiaqi/p/6376751.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值