解析json之com.google.gson.Gson

http://blog.csdn.net/itlwc/article/details/38454867

需要导入的架包

[java]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. gson-2.2.4.jar  

JSON与数组互转

[java]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. package com.itlwc.text;  
  2.   
  3. import com.google.gson.Gson;  
  4.   
  5. public class Test {  
  6.     public static void main(String[] args) {  
  7.         //将数组转JSON  
  8.         int[] number = {1,2,3,4,5};  
  9.         Gson gson = new Gson();    
  10.         String numberjson = gson.toJson(number);  
  11.         System.out.println(numberjson);  
  12.           
  13.         //将JSON转数组  
  14.         int[] numberNew = gson.fromJson(numberjson, int[].class);  
  15.         for (int i = 0; i < numberNew.length; i++) {  
  16.             System.out.print(numberNew[i] + " ");  
  17.         }  
  18.         System.out.println("");  
  19.     }  
  20. }  

JSON与JavaBean互转

[java]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. package com.itlwc.text;  
  2.   
  3. import java.util.ArrayList;  
  4. import java.util.List;  
  5.   
  6. import com.google.gson.Gson;  
  7.   
  8. class Student {  
  9.     private String no;  
  10.     private String name;  
  11.     private List<String> firends;  
  12.   
  13.     public Student(String no, String name, List<String> firends) {  
  14.         this.no = no;  
  15.         this.name = name;  
  16.         this.firends = firends;  
  17.     }  
  18.   
  19.     public String getNo() {  
  20.         return no;  
  21.     }  
  22.   
  23.     public void setNo(String no) {  
  24.         this.no = no;  
  25.     }  
  26.   
  27.     public String getName() {  
  28.         return name;  
  29.     }  
  30.   
  31.     public void setName(String name) {  
  32.         this.name = name;  
  33.     }  
  34.   
  35.     public List<String> getFirends() {  
  36.         return firends;  
  37.     }  
  38.   
  39.     public void setFirends(List<String> firends) {  
  40.         this.firends = firends;  
  41.     }  
  42.   
  43.     @Override  
  44.     public String toString() {  
  45.         return "学号: " + this.getNo() + " 姓名:" + this.getName() + " 朋友:"  
  46.                 + this.getFirends();  
  47.     }  
  48. }  
  49.   
  50. public class Test {  
  51.     public static void main(String[] args) {  
  52.         // JavaBean转JSON  
  53.         List list = new ArrayList();  
  54.         list.add("1002");  
  55.         list.add("1003");  
  56.         Student stu = new Student("1001""lwc", list);  
  57.         Gson gson = new Gson();  
  58.         String jsondata = gson.toJson(stu);  
  59.         System.out.println(jsondata);  
  60.   
  61.         // JSON转JavaBean  
  62.         stu = null;  
  63.         stu = gson.fromJson(jsondata, Student.class);  
  64.         System.out.println(stu);  
  65.     }  
  66. }  
  67. /* 
  68. 打印结果:  
  69.     {"no":"1001","name":"lwc","firends":["1002","1003"]} 
  70.     学号: 1001 姓名:lwc 朋友:[1002, 1003] 
  71. */  

JSON与List互转

[java]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. package com.itlwc.text;  
  2.   
  3. import java.util.ArrayList;  
  4. import java.util.List;  
  5.   
  6. import com.google.gson.Gson;  
  7.   
  8. public class Test {  
  9.     public static void main(String[] args) {  
  10.         // List转JSON  
  11.         List list = new ArrayList();  
  12.         for (int i = 0; i < 5; i++) {  
  13.             list.add("element" + i);  
  14.         }  
  15.         System.out.println(list);  
  16.         Gson gson = new Gson();  
  17.         String json = gson.toJson(list);  
  18.         System.out.println(json);  
  19.   
  20.         // JSON转List  
  21.         List list2 = (List) gson.fromJson(json, Object.class);  
  22.         for (int i = 0; i < list2.size(); i++) {  
  23.             System.out.println((String) list2.get(i));  
  24.         }  
  25.     }  
  26. }  
  27. /* 
  28. 打印结果: 
  29.     [element0, element1, element2, element3, element4] 
  30.     ["element0","element1","element2","element3","element4"] 
  31.     element0 
  32.     element1 
  33.     element2 
  34.     element3 
  35.     element4 
  36. */  

JSON与泛型List互转

[java]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. package com.itlwc.text;  
  2.   
  3. import java.lang.reflect.Type;  
  4. import java.util.ArrayList;  
  5. import java.util.List;  
  6.   
  7. import com.google.gson.Gson;  
  8. import com.google.gson.reflect.TypeToken;  
  9.   
  10. class Student {  
  11.     private String no;  
  12.     private String name;  
  13.   
  14.     public Student(String no, String name) {  
  15.         this.no = no;  
  16.         this.name = name;  
  17.     }  
  18.   
  19.     public String getNo() {  
  20.         return no;  
  21.     }  
  22.   
  23.     public void setNo(String no) {  
  24.         this.no = no;  
  25.     }  
  26.   
  27.     public String getName() {  
  28.         return name;  
  29.     }  
  30.   
  31.     public void setName(String name) {  
  32.         this.name = name;  
  33.     }  
  34.   
  35.     @Override  
  36.     public String toString() {  
  37.         return "学号: " + this.getNo() + " 姓名:" + this.getName();  
  38.     }  
  39. }  
  40.   
  41. public class Test {  
  42.     public static void main(String[] args) {  
  43.         // 泛型Lis转JSON  
  44.         List<Student> list = new ArrayList<Student>();  
  45.         for (int i = 0; i < 3; i++) {  
  46.             Student stu = new Student("100" + i, "name" + i);  
  47.             list.add(stu);  
  48.         }  
  49.         System.out.println(list);  
  50.         Type type = new TypeToken<List<Student>>() {}.getType();  
  51.         Gson gson = new Gson();  
  52.         String json = gson.toJson(list, type);  
  53.         System.out.println(json);  
  54.           
  55.         //JSON转泛型Lis  
  56.         List<Student> users = gson.fromJson(json.toString(), type);  
  57.         System.out.println(users);  
  58.     }  
  59. }  
  60. /* 
  61. 打印结果: 
  62.     [学号: 1000 姓名:name0, 学号: 1001 姓名:name1, 学号: 1002 姓名:name2] 
  63.     [ 
  64.         {"no":"1000","name":"name0"},{"no":"1001","name":"name1"}, 
  65.         {"no":"1002","name":"name2"} 
  66.     ] 
  67.     [学号: 1000 姓名:name0, 学号: 1001 姓名:name1, 学号: 1002 姓名:name2] 
  68. */  

Map转JSON

[java]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. package com.itlwc.text;  
  2.   
  3. import java.util.HashMap;  
  4. import java.util.Map;  
  5.   
  6. import com.google.gson.Gson;  
  7.   
  8. public class Test {  
  9.     public static void main(String[] args) {  
  10.         // Map转JSON  
  11.         Map map = new HashMap();  
  12.         map.put("no""1001");  
  13.         map.put("name""lwc");  
  14.         System.out.println(map);  
  15.         Gson gson = new Gson();  
  16.         String json = gson.toJson(map);  
  17.         System.out.println(json);  
  18.     }  
  19. }  
  20. /* 
  21. 打印结果: 
  22.     {no=1001, name=lwc} 
  23.     {"no":"1001","name":"lwc"} 
  24. */  

JSON与泛型Map互转

[java]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. package com.itlwc.text;  
  2.   
  3. import java.lang.reflect.Type;  
  4. import java.util.HashMap;  
  5. import java.util.Map;  
  6.   
  7. import com.google.gson.Gson;  
  8. import com.google.gson.reflect.TypeToken;  
  9.   
  10. class Student {  
  11.     private String no;  
  12.     private String name;  
  13.   
  14.     public Student(String no, String name) {  
  15.         this.no = no;  
  16.         this.name = name;  
  17.     }  
  18.   
  19.     public String getNo() {  
  20.         return no;  
  21.     }  
  22.   
  23.     public void setNo(String no) {  
  24.         this.no = no;  
  25.     }  
  26.   
  27.     public String getName() {  
  28.         return name;  
  29.     }  
  30.   
  31.     public void setName(String name) {  
  32.         this.name = name;  
  33.     }  
  34.   
  35.     @Override  
  36.     public String toString() {  
  37.         return "学号: " + this.getNo() + " 姓名:" + this.getName();  
  38.     }  
  39. }  
  40.   
  41. public class Test {  
  42.     public static void main(String[] args) {  
  43.         // JSON转泛型Map  
  44.         Map<String, Student> map = new HashMap<String, Student>();  
  45.         for (int i = 0; i < 2; i++) {  
  46.             Student stu = new Student("100" + i, "name" + i);  
  47.             map.put("100" + i, stu);  
  48.         }  
  49.         System.out.println(map);  
  50.         Type type = new TypeToken<Map<String, Student>>() {  
  51.         }.getType();  
  52.         Gson gson = new Gson();  
  53.         String json = gson.toJson(map, type);  
  54.         System.out.println(json);  
  55.   
  56.         // 转泛型Map转JSON  
  57.         Map<String, Student> mapStu = gson.fromJson(json.toString(), type);  
  58.         System.out.println(mapStu);  
  59.     }  
  60. }  
  61. /* 
  62. 打印结果: 
  63.     {1001=学号: 1001 姓名:name1, 1000=学号: 1000 姓名:name0} 
  64.     {"1001":{"no":"1001","name":"name1"},"1000":{"no":"1000","name":"name0"}} 
  65.     {1001=学号: 1001 姓名:name1, 1000=学号: 1000 姓名:name0} 
  66. */  

JSON与带日期JavaBean互转

[java]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. package com.itlwc.text;  
  2.   
  3. import java.lang.reflect.Type;  
  4. import java.text.DateFormat;  
  5. import java.util.ArrayList;  
  6. import java.util.Date;  
  7. import java.util.List;  
  8.   
  9. import com.google.gson.Gson;  
  10. import com.google.gson.GsonBuilder;  
  11. import com.google.gson.JsonDeserializationContext;  
  12. import com.google.gson.JsonDeserializer;  
  13. import com.google.gson.JsonElement;  
  14. import com.google.gson.JsonParseException;  
  15. import com.google.gson.JsonPrimitive;  
  16. import com.google.gson.JsonSerializationContext;  
  17. import com.google.gson.JsonSerializer;  
  18. import com.google.gson.reflect.TypeToken;  
  19.   
  20. class Student {  
  21.     private String no;  
  22.     private String name;  
  23.     private Date date;  
  24.   
  25.     public Student(String no, String name, Date date) {  
  26.         this.no = no;  
  27.         this.name = name;  
  28.         this.date = date;  
  29.     }  
  30.   
  31.     public String getNo() {  
  32.         return no;  
  33.     }  
  34.   
  35.     public void setNo(String no) {  
  36.         this.no = no;  
  37.     }  
  38.   
  39.     public String getName() {  
  40.         return name;  
  41.     }  
  42.   
  43.     public void setName(String name) {  
  44.         this.name = name;  
  45.     }  
  46.   
  47.     public Date getDate() {  
  48.         return date;  
  49.     }  
  50.   
  51.     public void setDate(Date date) {  
  52.         this.date = date;  
  53.     }  
  54.   
  55.     @Override  
  56.     public String toString() {  
  57.         return "学号: " + this.getNo() + " 姓名:" + this.getName() + " 入学时间:"  
  58.                 + this.getDate();  
  59.     }  
  60. }  
  61.   
  62. /** 
  63.  * 日期解序列实用工具类 
  64.  *  
  65.  * @author Administrator 
  66.  *  
  67.  */  
  68. class DateSerializerUtils implements JsonSerializer<java.util.Date> {  
  69.     public JsonElement serialize(Date arg0, Type arg1,  
  70.             JsonSerializationContext arg2) {  
  71.         return new JsonPrimitive(arg0.getTime());  
  72.     }  
  73.   
  74. }  
  75.   
  76. /** 
  77.  * 日期序列化实用工具类 
  78.  *  
  79.  * @author Administrator 
  80.  *  
  81.  */  
  82. class DateDeserializerUtils implements JsonDeserializer<java.util.Date> {  
  83.     public Date deserialize(JsonElement arg0, Type arg1,  
  84.             JsonDeserializationContext arg2) throws JsonParseException {  
  85.         return new java.util.Date(arg0.getAsJsonPrimitive().getAsLong());  
  86.     }  
  87. }  
  88.   
  89. public class Test {  
  90.     public static void main(String[] args) {  
  91.         // 带日期JavaBean转JSON  
  92.         Student stu = new Student("1001""lwc"new Date());  
  93.         Gson gson = new Gson();  
  94.         gson = new GsonBuilder().registerTypeAdapter(Date.class,  
  95.                 new DateSerializerUtils()).setDateFormat(DateFormat.LONG)  
  96.                 .create();  
  97.         String json = gson.toJson(stu);  
  98.         System.out.println(json);  
  99.   
  100.         // JSON转带日期JavaBean  
  101.         gson = new GsonBuilder().registerTypeAdapter(Date.class,  
  102.                 new DateDeserializerUtils()).setDateFormat(DateFormat.LONG)  
  103.                 .create();  
  104.         Type type = new TypeToken<Student>() {  
  105.         }.getType();  
  106.         Student s = gson.fromJson(json, type);  
  107.         System.out.println(s);  
  108.   
  109.           
  110.           
  111.           
  112.         // 泛型日期List转JSON  
  113.         List<Student> list = new ArrayList<Student>();  
  114.         list.add(new Student("1001""name1"new Date()));  
  115.         list.add(new Student("1002""name2"new Date()));  
  116.         System.out.println(list);  
  117.         gson = new GsonBuilder().registerTypeAdapter(Date.class,  
  118.                 new DateSerializerUtils()).setDateFormat(DateFormat.LONG)  
  119.                 .create();  
  120.         Type type2 = new TypeToken<List<Student>>() {  
  121.         }.getType();  
  122.         json = gson.toJson(list, type2);  
  123.         System.out.println(json);  
  124.   
  125.         // JSON转泛型日期List  
  126.         gson = new GsonBuilder().registerTypeAdapter(Date.class,  
  127.                 new DateDeserializerUtils()).setDateFormat(DateFormat.LONG)  
  128.                 .create();  
  129.         List<Student> stus = gson.fromJson(json.toString(), type);  
  130.         System.out.println(stus);  
  131.     }  
  132. }  
  133. /* 
  134. 打印结果:  
  135.     {"no":"1001","name":"lwc","date":1407561795000} 
  136.     学号: 1001 姓名:lwc 入学时间:Sat Aug 09 13:23:15 CST 2014 
  137.     [学号: 1001 姓名:name1 入学时间:Sat Aug 09 13:23:15 CST 2014, 学号: 1002 姓名:name2 入学时间:Sat Aug 09 13:23:15 CST 2014] 
  138.     [{"no":"1001","name":"name1","date":1407561795093},{"no":"1002","name":"name2","date":1407561795093}] 
  139. */  

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: com.google.gson.GsonGoogle 提供的一个 Java 库,用于将 Java 对象转换为 JSON 格式的字符串,以及将 JSON 格式的字符串转换为 Java 对象。这个库提供了简单易用的 API,可以帮助开发者在 Java 应用程序中方便地进行 JSON 数据的处理。Gson 库支持泛型、注解、Null 值处理等功能,可以满足大部分的 JSON 数据处理需求。 ### 回答2: com.google.gson.gson是指Google提供的用于处理JSON数据的Java库。它是一个轻量级的库,可以将Java对象转换为JSON字符串,并将JSON字符串转换为Java对象。这个库提供了许多灵活的方法来解析、生成、序列化和反序列化JSON数据。 使用com.google.gson.gson库,我们可以很容易地将一个Java对象转换为JSON字符串。我们可以通过创建一个Gson对象,并使用其toJson方法传入要转换的Java对象,然后将Java对象转换为JSON格式的字符串。我们还可以通过传入一个Java对象和一个输出流,将JSON字符串写入到输出流。 除了将Java对象转换为JSON字符串,com.google.gson.gson还可以将JSON字符串转换回Java对象。我们可以使用fromJson方法将一个JSON字符串转换为Java对象。我们只需将JSON字符串和要转换为的Java对象类型传递给fromJson方法,即可实现JSON字符串到Java对象的反序列化过程。 com.google.gson.gson库还提供了一些其他的功能,例如设置日期格式、处理泛型类型、自定义序列化和反序列化逻辑等。总之,它是一个功能强大且易于使用的库,可以帮助我们在Java程序中处理JSON数据。 ### 回答3: com.google.gson.gson是一个Java库,用于处理JSON数据的序列化和反序列化。它是由Google开发的,并且被广泛应用于各种Java项目中。 使用com.google.gson.gson,我们可以方便地将Java对象转换为JSON字符串,并将JSON字符串转换回相应的Java对象。这在与前后端交互时特别有用,因为前端常使用JSON格式来传递数据。 要使用com.google.gson.gson,首先需要在项目中引入相应的依赖。然后我们可以通过创建一个Gson对象来开始使用它。我们可以使用Gson对象的toJson()方法将一个Java对象转换为JSON字符串,也可以使用fromJson()方法将JSON字符串转换为Java对象。 除了基本的序列化和反序列化功能,com.google.gson.gson还提供了许多高级功能。例如,我们可以通过自定义TypeAdapter来扩展Gson的功能,以实现更复杂的序列化和反序列化操作。此外,我们还可以使用GsonBuilder来自定义Gson对象的各种行为,例如设置日期格式、空值处理等。 总之,com.google.gson.gson是一个强大而灵活的JSON处理库,它使Java开发人员能够轻松地在Java对象和JSON数据之间进行转换。无论是处理前后端交互、数据持久化还是其他与JSON相关的操作,com.google.gson.gson都是一个非常有用的工具。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值