Jackson學習一之對象與JSON互相轉化

簡介:

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]]  

 

小結:

  • 轉換的關鍵就是ObjectMapper 
  • 在使用ObjectMapper對象readValue或者writeValue的時候,JSON可以以字符串的形式傳入,也可以以文件的形式傳入,官方的例子是讓將JSON保存在文件中
  • 明顯JSON字串中的key與Java類中的field名字應該要相同
  • Student類如果有自定義構造函數的時候,進行JSON->對象轉換會出錯,接下去再研究這個問題..
  • Date域是以long類型輸出的,有必要的話,需要進行格式轉換

  • 轉自:http://lijingshou.iteye.com/blog/2003020
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章