安卓中使用Gson解析json方法详解与使用例子

  1.        //转换器  
  2.         GsonBuilder builder = new GsonBuilder();   
  3.         // 不转换没有 @Expose 注解的字段   @Expose的作用是支持序列化,没有@Expose不会被序列化
  4.         builder.excludeFieldsWithoutExposeAnnotation();  
  5.         Gson gson = builder.create();
  6.  

    @Expose注解的作用:区分实体中不想被序列化的属性,其自身包含两个属性deserialize(反序列化)和serialize(序列化),默认都为true。

    使用 new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create();创建Gson对象,没有@Expose注释的属性将不会被序列化.。

           


    private class User{
          private int id;
          @Expose
          private String name;
          .......
    
    }
    这样create() gson对象序列化user,只会有name这一个属性   


也可以直接new出来
Gson gson =new Gson;//这样就不用@Expose注解,全部都能序列化

  1.           
  2.         //1、对象转string  
  3.         Student stu = new Student();  
  4.         stu.setStudentId(333);  
  5.         stu.setStudentName("qqq");  
  6.         String stuStr = gson.toJson(stu);  
  7.         System.out.println(stuStr); //{"studentName":"qqq","studentId":333}  
  8.           
  9.           
  10.         //2、string转对象  
  11.         Student user2 = gson.fromJson(stuStr, Student.class);   
  12.         System.out.println(user2);   
  13.         String stuTemp = "{\"studentName\":\"qqq2\",\"studentId\":3335}";  
  14.         Student user4 = gson.fromJson(stuTemp, Student.class);   
  15.         System.out.println(user4);   
  16.   
  17.         //3、对象List转string  
  18.         List<Student> testBeanList = new ArrayList<Student>();   
  19.         Student testBean = new Student();   
  20.         testBean.setStudentId(555);  
  21.         testBean.setStudentName("552");  
  22.         testBeanList.add(testBean);   
  23.           
  24.         //Gson gsonList = new Gson();   
  25.         Type type = new TypeToken<List<Student>>(){}.getType();  //指定集合对象属性  
  26.         String beanListToJson = gson.toJson(testBeanList, type);   
  27.         System.out.println(beanListToJson); //[{"studentName":"552","studentId":555}]   
  28.   
  29.         //集合string转对象list  
  30.         List<Student> testBeanListFromJson = gson.fromJson(beanListToJson, type);   
  31.         System.out.println(testBeanListFromJson); //[555:552]  
  32.   
  33.         //4、集合如果不指定类型 默认为String  
  34.         List<String> testList = new ArrayList<String>();   
  35.         testList.add("first");   
  36.         testList.add("second");   
  37.         String listToJson = gson.toJson(testList);   
  38.         System.out.println(listToJson); //["first","second"]   
  39.           
  40.         //5、集合字符串转回来需要指定类型  
  41.         List<String> testList2 = (List<String>) gson.fromJson(listToJson,   
  42.           new TypeToken<List<String>>() {   
  43.           }.getType());   
  44.         System.out.println(testList2);   
  45.   
  46.         //6、 将HashMap字符串转换为 JSON   
  47.         Map<String, String> testMap = new HashMap<String, String>();   
  48.         testMap.put("id""id.first");   
  49.         testMap.put("name""name.second");   
  50.         String mapToJson = gson.toJson(testMap);   
  51.         System.out.println(mapToJson); //{"id":"id.first","name":"name.second"}  
  52.         //7、stringMap转对象  
  53.         Map<String, String> userMap2 = (Map<String, String>) gson.fromJson(mapToJson,   
  54.                 new TypeToken<Map<String, String>>() {   
  55.             }.getType());   
  56.         System.out.println(userMap2); //{id=id.first, name=name.second}   
  57.   
  58.         //8、对象含有普通对象、集合、map情况  
  59.         Student user1 = new Student();   
  60.         user1.setStudentId(1001);   
  61.         user1.setStudentName("张三");   
  62.           
  63.         Student user3 = new Student();   
  64.         user3.setStudentId(1002);   
  65.         user3.setStudentName("李四");   
  66.           
  67.         Map<String, Student> userMap = new HashMap<String, Student>();   
  68.         userMap.put("user1", user1);   
  69.         userMap.put("user3", user3);   
  70.           
  71.         List<Student> userList = new ArrayList<Student>();   
  72.         userList.add(user1);   
  73.         userList.add(user3);   
  74.           
  75.         Teacher groupBean = new Teacher();   
  76.         groupBean.setStudent(user1);  
  77.         groupBean.setStus(userList);  
  78.         groupBean.setMap((HashMap)userMap);  
  79.         //groupBean.setUserList(userList);   
  80.         Gson gsonGroup = new Gson();   
  81.   
  82.         String sGroupBean = gsonGroup.toJson(groupBean, new TypeToken<Teacher>() {   
  83.             }.getType());   
  84.         System.out.println(sGroupBean);   
  85.         /*{"stus":[{"studentName":"张三","studentId":1001},{"studentName":"李四","studentId":1002}],"student":{"studentName":"张三","studentId":1001},"map":{"user3":{"studentName":"李四","studentId":1002},"user1":{"studentName":"张三","studentId":1001}},"id":0,"age":0}*/  
Java代码   收藏代码
  1. //9、复杂对象string转对象  
  2. Teacher groupBean2 = (Teacher) gson.fromJson(sGroupBean,   
  3.    new TypeToken<Teacher>() {   
  4.    }.getType());   
  5. System.out.println(groupBean2);   

 

Java代码   收藏代码
  1. package com.andtools;  
  2.   
  3. import com.google.gson.annotations.Expose;  
  4.   
  5. public class Student {  
  6.     @Expose  
  7.     private String studentName;  
  8.     @Expose  
  9.     private int studentId;  
  10.     public Student(){}  
  11.     public Student(int studentId,String studentName){  
  12.         this.setStudentId(studentId);  
  13.         this.setStudentName(studentName);  
  14.     }  
  15.     public String toString(){  
  16.         return this.getStudentId() + ":" + this.getStudentName();  
  17.     }  
  18.     public String getStudentName() {  
  19.         return studentName;  
  20.     }  
  21.     public void setStudentName(String studentName) {  
  22.         this.studentName = studentName;  
  23.     }  
  24.     public int getStudentId() {  
  25.         return studentId;  
  26.     }  
  27.     public void setStudentId(int studentId) {  
  28.         this.studentId = studentId;  
  29.     }  
  30.       
  31. }  

 

Java代码   收藏代码
  1. package com.andtools;  
  2.   
  3. import java.util.HashMap;  
  4. import java.util.List;  
  5. import java.util.Map;  
  6.   
  7. import com.google.gson.annotations.Expose;  
  8.   
  9. public class Teacher {  
  10.     @Expose  
  11.     private int id;  
  12.     @Expose  
  13.     private String name;  
  14.     @Expose  
  15.     private int age;  
  16.     @Expose  
  17.     private Student student;  
  18.     @Expose  
  19.     private List stus;  
  20.     @Expose  
  21.     private HashMap map;  
  22.     public String toString(){  
  23.         return this.getId()+":"+this.getName()+":"+this.getAge() +":"this.getStudent().toString() + ":" + this.getStus() + ":" + this.getMap();  
  24.     }  
  25.     public int getId() {  
  26.         return id;  
  27.     }  
  28.     public void setId(int id) {  
  29.         this.id = id;  
  30.     }  
  31.     public String getName() {  
  32.         return name;  
  33.     }  
  34.     public void setName(String name) {  
  35.         this.name = name;  
  36.     }  
  37.     public int getAge() {  
  38.         return age;  
  39.     }  
  40.     public void setAge(int age) {  
  41.         this.age = age;  
  42.     }  
  43.     public Student getStudent() {  
  44.         return student;  
  45.     }  
  46.     public void setStudent(Student student) {  
  47.         this.student = student;  
  48.     }  
  49.     public List getStus() {  
  50.         return stus;  
  51.     }  
  52.     public void setStus(List stus) {  
  53.         this.stus = stus;  
  54.     }  
  55.     public HashMap getMap() {  
  56.         return map;  
  57.     }  
  58.     public void setMap(HashMap map) {  
  59.         this.map = map;  
  60.     }  
  61.       
  62. }  

你可能感兴趣的:(json,gson)