e2

滴滴侠,fai抖

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

简介:

Jackson是一个流行的基于Java的JSON处理框架

官方wiki:http://wiki.fasterxml.com/JacksonInFiveMinutes

官方文档:http://wiki.fasterxml.com/JacksonDocumentation

学习参考: Json转换利器Gson之实例 系列,顺便也学习一下GSON

 

本篇简介如何使用Jackson进行Java对象与JSON的互相转换

新建基本Student类:

Java代码  
  1. package com.jingshou.pojo;  
  2.   
  3. import java.util.Date;  
  4.   
  5. public class Student {  
  6.     private int id;  
  7.     private String name;  
  8.     private Date birthDay;  
  9.   
  10.     public int getId() {  
  11.         return id;  
  12.     }  
  13.   
  14.     public void setId(int id) {  
  15.         this.id = id;  
  16.     }  
  17.   
  18.     public String getName() {  
  19.         return name;  
  20.     }  
  21.   
  22.     public void setName(String name) {  
  23.         this.name = name;  
  24.     }  
  25.   
  26.     public Date getBirthDay() {  
  27.         return birthDay;  
  28.     }  
  29.   
  30.     public void setBirthDay(Date birthDay) {  
  31.         this.birthDay = birthDay;  
  32.     }  
  33.   
  34.     @Override  
  35.     public String toString() {  
  36.         return "Student [birthDay=" + birthDay + ", id=" + id + ", name="  
  37.                 + name + "]";  
  38.     }  
  39.   
  40. }  

 班级类:

Java代码  
  1. package com.jingshou.pojo;  
  2.   
  3. import java.util.List;  
  4.   
  5. public class Class {  
  6.     private String cname;  
  7.     private List<Student> members;  
  8.     public String getCname() {  
  9.         return cname;  
  10.     }  
  11.     public void setCname(String cname) {  
  12.         this.cname = cname;  
  13.     }  
  14.     public List<Student> getMembers() {  
  15.         return members;  
  16.     }  
  17.     public void setMembers(List<Student> members) {  
  18.         this.members = members;  
  19.     }  
  20.       
  21.     public String toString(){  
  22.         return "The Class Name is: " + cname + " " + "The members are: " + members;  
  23.           
  24.     }  
  25.       
  26.   
  27. }  

测试代码:

Java代码  
  1. package com.jingshou.jackson;  
  2.   
  3. import java.io.IOException;  
  4. import java.util.ArrayList;  
  5. import java.util.Date;  
  6. import java.util.List;  
  7.   
  8. import com.fasterxml.jackson.databind.ObjectMapper;  
  9. import com.jingshou.pojo.Class;  
  10. import com.jingshou.pojo.Student;  
  11.   
  12. public class JacksonTest1 {  
  13.   
  14.     public static void main(String[] args) throws IOException {  
  15.         Student student1 = new Student();    
  16.         student1.setId(5237);  
  17.         student1.setName("jingshou");  
  18.         student1.setBirthDay(new Date());  
  19.           
  20.         ObjectMapper mapper = new ObjectMapper();  
  21.           
  22.         // Convert object to JSON string  
  23.         String Json =  mapper.writeValueAsString(student1);  
  24.         System.out.println("Change Object to JSON String: " + Json);  
  25.           
  26.         // Convert Json string to Object  
  27.         Student student2 = mapper.readValue(Json, Student.class);  
  28.         System.out.println(student2);  
  29.           
  30.         // Create a student list add it to Bj  
  31.         Student student3 = new Student();    
  32.         student3.setId(5117);    
  33.         student3.setName("saiya");    
  34.         student3.setBirthDay(new Date());    
  35.     
  36.         List<Student> stuList = new ArrayList<Student>();  
  37.         stuList.add(student1);  
  38.         stuList.add(student3);  
  39.           
  40.         Class bj = new Class();  
  41.         bj.setCname("五年二班");  
  42.         bj.setMembers(stuList);  
  43.           
  44.         String json2 = mapper.writeValueAsString(bj);  
  45.         System.out.println("The JSON from Class is: " + json2);  
  46.           
  47.         Class bj2 = mapper.readValue(json2, Class.class);  
  48.         System.out.println(bj2);  
  49.           
  50.   
  51.     }  
  52.   
  53. }  

 运行结果:

Text代码  
  1. Change Object to JSON String: {"id":5237,"name":"jingshou","birthDay":1389513906622}  
  2. Student [birthDay=Sun Jan 12 16:05:06 CST 2014, id=5237, name=jingshou]  
  3. The JSON from Class is: {"cname":"五年二班","members":[{"id":5237,"name":"jingshou","birthDay":1389513906622},{"id":5117,"name":"saiya","birthDay":1389513906859}]}  
  4. The Class Name is: 五年二班 The members are: [Student [birthDay=Sun Jan 12 16:05:06 CST 2014, id=5237, name=jingshou], Student [birthDay=Sun Jan 12 16:05:06 CST 2014, id=5117, name=saiya]]  
Change Object to JSON String: {"id":5237,"name":"jingshou","birthDay":1389513906622}
Student [birthDay=Sun Jan 12 16:05:06 CST 2014, id=5237, name=jingshou]
The JSON from Class is: {"cname":"五年二班","members":[{"id":5237,"name":"jingshou","birthDay":1389513906622},{"id":5117,"name":"saiya","birthDay":1389513906859}]}
The Class Name is: 五年二班 The members are: [Student [birthDay=Sun Jan 12 16:05:06 CST 2014, id=5237, name=jingshou], Student [birthDay=Sun Jan 12 16:05:06 CST 2014, id=5117, name=saiya]]

 

小结:

  • 转换的关键就是ObjectMapper 
  • 在使用ObjectMapper对象readValue或者writeValue的时候,JSON可以以字符串的形式传入,也可以以文件的形式传入,官方的例子是让将JSON保存在文件中
  • 明显JSON字串中的key与Java类中的field名字应该要相同
  • Student类如果有自定义构造函数的时候,进行JSON->对象转换会出错,接下去再研究这个问题..
  • Date域是以long类型输出的,有必要的话,需要进行格式转换

 本文出自"lijingshou"博客,请务必保留此出处http://lijingshou.iteye.com/blog/2003020

posted on 2017-07-09 17:26  纯黑Se丶  阅读(138)  评论(0编辑  收藏  举报