0
点赞
收藏
分享

微信扫一扫

android:json解析的两个工具:Gson和Jackson的使用小例子

兮城 2023-05-08 阅读 108


1.简介

json是android与服务器通信过程中常用的数据格式,例如,如下是一个json格式的字符串:


[plain]  view plain copy



  1. {"address":"Nanjing","name":"NUPT","students":[{"name":"stu1","id":"10000","age":20},{"name":"stu1","id":"10001","age":21},{"name":"stu1","id":"10002","age":22}]}  



2.android中常用的两个json库为:Gson和Jackson,一下就看一下它们是如何将对象转化为json字符串,以及如何将json字符串转化为java对象。

定义Student类:



[java]  view plain copy



  1. /*
  2.  * $filename: Student.java,v $
  3.  * $Date: 2014-5-12  $
  4.  * Copyright (C) ZhengHaibo, Inc. All rights reserved.
  5.  * This software is Made by Zhenghaibo.
  6.  */  
  7. package com.example.testjson;  
  8. /*
  9.  *@author: ZhengHaibo  
  10.  *web:     http://blog.csdn.net/nuptboyzhb
  11.  *mail:    zhb931706659@126.com
  12.  *2014-5-12  Nanjing,njupt,China
  13.  */  
  14. public class Student {  
  15. private String name;  
  16. private String id;  
  17. private int age;  
  18. public String getName() {  
  19. return name;  
  20.     }  
  21. public void setName(String name) {  
  22. this.name = name;  
  23.     }  
  24. public String getId() {  
  25. return id;  
  26.     }  
  27. public void setId(String id) {  
  28. this.id = id;  
  29.     }  
  30. public int getAge() {  
  31. return age;  
  32.     }  
  33. public void setAge(int age) {  
  34. this.age = age;  
  35.     }  
  36. }  



定义School类:



[java]  view plain copy



  1. /*
  2.  * $filename: School.java,v $
  3.  * $Date: 2014-5-12  $
  4.  * Copyright (C) ZhengHaibo, Inc. All rights reserved.
  5.  * This software is Made by Zhenghaibo.
  6.  */  
  7. package com.example.testjson;  
  8.   
  9. import java.util.List;  
  10. /*
  11.  *@author: ZhengHaibo  
  12.  *web:     http://blog.csdn.net/nuptboyzhb
  13.  *mail:    zhb931706659@126.com
  14.  *2014-5-12  Nanjing,njupt,China
  15.  */  
  16. public class School {  
  17. private String name;  
  18. private String address;  
  19.     List<Student> students;  
  20. public String getName() {  
  21. return name;  
  22.     }  
  23. public void setName(String name) {  
  24. this.name = name;  
  25.     }  
  26. public String getAddress() {  
  27. return address;  
  28.     }  
  29. public void setAddress(String address) {  
  30. this.address = address;  
  31.     }  
  32. public List<Student> getStudents() {  
  33. return students;  
  34.     }  
  35. public void setStudents(List<Student> students) {  
  36. this.students = students;  
  37.     }  
  38. }  



初始化一个School的java对象,待使用:



[java]  view plain copy



  1. private School initSchoolData(){  
  2. new School();  
  3. "Nanjing");  
  4. "NUPT");  
  5. new ArrayList<Student>();  
  6. for(int i= 0;i<3;i++){                 
  7. new Student();  
  8. 20+i);  
  9. "1000"+i);  
  10. "stu"+1);  
  11.                 list.add(student);  
  12.             }  
  13.             school.setStudents(list);  
  14. return school;  
  15.         }  




3.使用Gson,进行java对象与json字符串之间的相互转换



[java]  view plain copy



  1. private void testGson(){  
  2.             School school = initSchoolData();  
  3. new Gson();  
  4. //将对象转化为json字符串  
  5.             String jsonString = gson.toJson(school).toString();  
  6. //打印  
  7. "GSON="+jsonString);  
  8. /******分割线*****/  
  9. //将字符串转化为JSON对象  
  10. class);  
  11. //打印  
  12. 0).getName());  
  13.         }  



可见,Gson是通过toJson和fromJson两个方法进行转换的,使用起来十分方便。

4.使用Jackson



[java]  view plain copy



  1. private void testJackson(){  
  2.             School school = initSchoolData();  
  3. new ObjectMapper();  
  4. "";  
  5. //将对象转化为Json字符串  
  6. try {  
  7.                 jsonString = objectMapper.writeValueAsString(school);  
  8. "Jackson="+jsonString);  
  9. catch (JsonProcessingException e) {  
  10. // TODO Auto-generated catch block  
  11.                 e.printStackTrace();  
  12.             }  
  13. //将json字符串解析成java对象  
  14. try {  
  15. class);  
  16. //打印  
  17. 0).getName());  
  18. catch (JsonParseException e) {  
  19. // TODO Auto-generated catch block  
  20.                 e.printStackTrace();  
  21. catch (JsonMappingException e) {  
  22. // TODO Auto-generated catch block  
  23.                 e.printStackTrace();  
  24. catch (IOException e) {  
  25. // TODO Auto-generated catch block  
  26.                 e.printStackTrace();  
  27.             }  
  28.         }  



使用Jackson,主要是使用writeValueAsString和readValue这两个方法。此外,Jackson的writeValue和readValue有很多种参数类型,适用于多中场合。

注意:以上只是这两个工具类的基本用法,更多了解,参见官方文档。

Gson文档:http://code.google.com/p/google-gson/

Jackson:http://jackson.codehaus.org/

举报

相关推荐

0 条评论