zoukankan      html  css  js  c++  java
  • 用jackson包实现json、对象、Map之间的转换

    主要用于测试学习用jackson包实现json、对象、Map之间的转换。

    1、准备测试用的Java类

    (1)Link类

    Java代码  收藏代码
    1. package test;  
    2.   
    3. /**  
    4.  * Description: 联系方式,被user使用 
    5.  */  
    6. public class Link  
    7. {  
    8.     private String phone; //移动电话  
    9.     private String address; //地址  
    10.     private String qq; //QQ  
    11.       
    12.     public String getPhone()  
    13.     {  
    14.         return phone;  
    15.     }  
    16.     public void setPhone(String phone)  
    17.     {  
    18.         this.phone = phone;  
    19.     }  
    20.     public String getAddress()  
    21.     {  
    22.         return address;  
    23.     }  
    24.     public void setAddress(String address)  
    25.     {  
    26.         this.address = address;  
    27.     }  
    28.     public String getQq()  
    29.     {  
    30.         return qq;  
    31.     }  
    32.     public void setQq(String qq)  
    33.     {  
    34.         this.qq = qq;  
    35.     }  
    36. }  

    (2)User类

    Java代码  收藏代码

    1. package test;  
    2.   
    3. import java.util.Date;  
    4. import java.util.List;  
    5. import java.util.Map;  
    6. import java.util.Set;  
    7.   
    8. /**  
    9.  * Description: 用户,测试模型类 
    10.  */  
    11. public class User  
    12. {  
    13.     private String id; //标识  
    14.     private String name;    //姓名  
    15.     private int age;    //年龄  
    16.     private double pay; //工资   
    17.     private boolean valid;  //是否有效  
    18.     private char one; //一个字符  
    19.     private Date birthday;  //生日  
    20.       
    21.     private Link link; //联系方式,自定义  
    22.       
    23.     private Map map; //测试用  
    24.     private List list; //测试用  
    25.     private Set set; //测试用  
    26.     public String getId()  
    27.     {  
    28.         return id;  
    29.     }  
    30.     public void setId(String id)  
    31.     {  
    32.         this.id = id;  
    33.     }  
    34.     public String getName()  
    35.     {  
    36.         return name;  
    37.     }  
    38.     public void setName(String name)  
    39.     {  
    40.         this.name = name;  
    41.     }  
    42.     public int getAge()  
    43.     {  
    44.         return age;  
    45.     }  
    46.     public void setAge(int age)  
    47.     {  
    48.         this.age = age;  
    49.     }  
    50.     public double getPay()  
    51.     {  
    52.         return pay;  
    53.     }  
    54.     public void setPay(double pay)  
    55.     {  
    56.         this.pay = pay;  
    57.     }  
    58.     public boolean isValid()  
    59.     {  
    60.         return valid;  
    61.     }  
    62.     public void setValid(boolean valid)  
    63.     {  
    64.         this.valid = valid;  
    65.     }  
    66.     public char getOne()  
    67.     {  
    68.         return one;  
    69.     }  
    70.     public void setOne(char one)  
    71.     {  
    72.         this.one = one;  
    73.     }  
    74.     public Date getBirthday()  
    75.     {  
    76.         return birthday;  
    77.     }  
    78.     public void setBirthday(Date birthday)  
    79.     {  
    80.         this.birthday = birthday;  
    81.     }  
    82.     public Link getLink()  
    83.     {  
    84.         return link;  
    85.     }  
    86.     public void setLink(Link link)  
    87.     {  
    88.         this.link = link;  
    89.     }  
    90.     public Map getMap()  
    91.     {  
    92.         return map;  
    93.     }  
    94.     public void setMap(Map map)  
    95.     {  
    96.         this.map = map;  
    97.     }  
    98.     public List getList()  
    99.     {  
    100.         return list;  
    101.     }  
    102.     public void setList(List list)  
    103.     {  
    104.         this.list = list;  
    105.     }  
    106.     public Set getSet()  
    107.     {  
    108.         return set;  
    109.     }  
    110.     public void setSet(Set set)  
    111.     {  
    112.         this.set = set;  
    113.     }  
    114. }  

    2、测试类,没用Junit,用Main()方法输出。

    Java代码  收藏代码
    1. package test;  
    2.   
    3. import java.io.IOException;  
    4. import java.util.ArrayList;  
    5. import java.util.Date;  
    6. import java.util.HashMap;  
    7. import java.util.HashSet;  
    8. import java.util.List;  
    9. import java.util.Map;  
    10. import java.util.Set;  
    11. import org.codehaus.jackson.JsonGenerationException;  
    12. import org.codehaus.jackson.map.JsonMappingException;  
    13. import org.codehaus.jackson.map.ObjectMapper;  
    14.   
    15. /**  
    16.  * Description: 主要用于测试学习用jackson包实现json、对象、Map之间的转换 
    17.  *  
    18.  * Date: 2016年6月6日 
    19.  * Time: 下午3:23:23 
    20.  */  
    21. public class JsonTest  
    22. {  
    23.   
    24.     public static void main(String[] args) throws JsonGenerationException, JsonMappingException, IOException  
    25.     {  
    26.         User user=new User();  
    27.         user.setId("01");  
    28.         user.setName("张三");  
    29.         user.setAge(33);  
    30.         user.setPay(6666.88);  
    31.         user.setValid(true);  
    32.         user.setOne('E');  
    33.         user.setBirthday(new Date(20l*366*24*3600*1000)); //1990年  
    34.           
    35.         Link link = new Link();  
    36.         link.setAddress("河南省济源市");  
    37.         link.setPhone("13899995555");  
    38.         link.setQq("123456");  
    39.         user.setLink(link);  
    40.           
    41.         Map map=new HashMap();  
    42.         map.put("aa", "this is aa");  
    43.         map.put("bb", "this is bb");  
    44.         map.put("cc", "this is cc");  
    45.         user.setMap(map);  
    46.           
    47.         List list=new ArrayList(){};  
    48.         list.add("普洱");  
    49.         list.add("大红袍");  
    50.         user.setList(list);  
    51.           
    52.         Set set=new HashSet();  
    53.         set.add("篮球");  
    54.         set.add("足球");  
    55.         set.add("乒乓球");  
    56.         user.setSet(set);  
    57.           
    58.         ObjectMapper mapper = new ObjectMapper(); //转换器  
    59.           
    60.         //测试01:对象--json  
    61.         String json=mapper.writeValueAsString(user); //将对象转换成json  
    62.         System.out.println(json);  
    63.         /* 结果如下: 
    64.         {"id":"01","name":"张三","age":33,"pay":6666.88,"valid":true,"one":"E","birthday":1465185448998, 
    65.         "link":{"phone":"13899995555","address":"河南省济源市","qq":"123456"}, 
    66.         "map":{"aa":"this is aa","bb":"this is bb","cc":"this is cc"}, 
    67.         "list":["普洱","大红袍"], 
    68.         "set":["乒乓球","足球","篮球"]} 
    69.          
    70.         注意点:(1) 日期--长整型 (2)List、Set均转成数组 
    71.          */  
    72.           
    73.         //测试02:json--map  
    74.         Map m = mapper.readValue(json, Map.class); //json转换成map  
    75.           
    76.         System.out.println("pay:"+m.get("pay").getClass().getName()); //java.lang.Double  
    77.         System.out.println("valid:"+m.get("valid").getClass().getName()); //java.lang.Boolean  
    78.         System.out.println("birthday:"+m.get("birthday").getClass().getName()); //java.lang.Long  
    79.         System.out.println("link:"+m.get("link").getClass().getName()); //java.util.LinkedHashMap  
    80.         System.out.println("map:"+m.get("map").getClass().getName()); //java.util.LinkedHashMap  
    81.         System.out.println("list:"+m.get("list").getClass().getName()); //java.util.ArrayList  
    82.         System.out.println("set:"+m.get("set").getClass().getName()); //java.util.ArrayList  
    83.         /*  结果如下: 
    84.             pay:java.lang.Double 
    85.             valid:java.lang.Boolean 
    86.             birthday:java.lang.Long 
    87.             link:java.util.LinkedHashMap 
    88.             map:java.util.LinkedHashMap 
    89.             list:java.util.ArrayList 
    90.             set:java.util.ArrayList 
    91.              
    92.             注意点:(1) 日期--长整型  (2)map、子对象均转换成了LinkedHashMap (3)List、Set均转成ArrayList 
    93.          */  
    94.           
    95.         //测试03:map--json  
    96.         json=mapper.writeValueAsString(m); //map转json  
    97.         System.out.println(json); //与之前格式完全相同,说明经过map转换后,信息没有丢失  
    98.           
    99.         //测试04:json--对象  
    100.         User u=mapper.readValue(json, User.class); //json转java对象。经测,转成对象后,一切恢复正常  
    101.         System.out.println("pay:"+u.getPay());  
    102.         System.out.println("valid:"+u.isValid());  
    103.         System.out.println("birthday:"+u.getBirthday());  
    104.         System.out.println("link:"+u.getLink());  
    105.         System.out.println("map:"+u.getMap());  
    106.         System.out.println("list:"+u.getList());  
    107.         System.out.println("set:"+u.getSet());  
    108.           
    109.         //测试05:其他转换  
    110.         byte[] data=mapper.writeValueAsBytes(u); //对象转成二进制数组  
    111.           
    112.           
    113.     }  
    114.   
    115. }  

    3、输出结果

    Other代码  收藏代码
    1. {"id":"01","name":"张三","age":33,"pay":6666.88,"valid":true,"one":"E","birthday":632448000000,"link":{"phone":"13899995555","address":"河南省济源市","qq":"123456"},"map":{"aa":"this is aa","bb":"this is bb","cc":"this is cc"},"list":["普洱","大红袍"],"set":["乒乓球","足球","篮球"]}  
    2. pay:java.lang.Double  
    3. valid:java.lang.Boolean  
    4. birthday:java.lang.Long  
    5. link:java.util.LinkedHashMap  
    6. map:java.util.LinkedHashMap  
    7. list:java.util.ArrayList  
    8. set:java.util.ArrayList  
    9. {"id":"01","name":"张三","age":33,"pay":6666.88,"valid":true,"one":"E","birthday":632448000000,"link":{"phone":"13899995555","address":"河南省济源市","qq":"123456"},"map":{"aa":"this is aa","bb":"this is bb","cc":"this is cc"},"list":["普洱","大红袍"],"set":["乒乓球","足球","篮球"]}  
    10. pay:6666.88  
    11. valid:true  
    12. birthday:Tue Jan 16 08:00:00 CST 1990  
    13. link:test.Link@350385f1  
    14. map:{aa=this is aa, bb=this is bb, cc=this is cc}  
    15. list:[普洱, 大红袍]  
    16. set:[足球, 乒乓球, 篮球]  

    摘抄自:http://rsy.iteye.com/blog/2303323

  • 相关阅读:
    PO BO VO DTO POJO DAO DO这些Java中的概念分别指一些什么?
    前端面试题汇总(待续)
    vue lottie vue-lottie : 使用教程
    webstorm 换行时 代码不对齐
    webstorm 导出编辑器配置.editorconfig
    vue 查看dist文件里的结构
    vue-cli 生产打包
    element form 校验数组每一项
    typescript无法识别vue中的$refs
    mac 10.14.5 [vue create的时候 mkdir没有权限]
  • 原文地址:https://www.cnblogs.com/love-cj/p/8242382.html
Copyright © 2011-2022 走看看