您的位置:首页 > 移动开发 > Android开发

Android 使用google-gson处理json格式数据

2016-05-23 13:41 666 查看
         private String address;

         public String getName() {

                   return name;

         }

         public void setName(String name) {

                   this.name = name;

         }

         public int getAge() {

                   return age;

         }

         public void setAge(int age) {

                   this.age = age;

         }

         public String getAddress() {

                   return address;

         }

         public void setAddress(String address) {

                   this.address = address;

         }

         public User(String name, int age, String address) {

                   super();

                   this.name = name;

                   this.age = age;

                   this.address = address;

         }

         @Override

         public String toString() {

                   return "User [name=" + name + ", age=" + age + ", address=" + address

                                     + "]";

         }

        

        

 

}

 

 

 

 

 

使用google-gson的代码片段如下:

 

 

    //0. 初始化json、User数组、List<User>、Map<String,User>、google-gson对象等数据:

 

                //构建json格式的字符串

                String jsonString="{'name':'tom','age':23,'address':'北京'}"; 

                  

                   User u1=new User("艾迪森", 25, "北京");

                   User u2=new User("安迪", 23, "南京");

                   User u3=new User("托马斯", 21, "上海");

                   User u4=new User("爱丽丝", 22, "郑州");

                  

                   User []us={u1,u2,u3,u4};

                  

                   List<User> users=new ArrayList<User>();

                   users.add(u1);

                   users.add(u2);

                   users.add(u3);

                   users.add(u4);

                  

                  

                   Map<String,User> maps=new HashMap<String, User>();

                   maps.put("1001", u1);

                   maps.put("1002", u2);

                   maps.put("1003", u3);

                   maps.put("1004", u4);

                  

     

                  

                   //创建gson对象

                   Gson g=new GsonBuilder().create();

   

 

    //1.json(对象)字符串和java对象间的相互转换

 

                  

                   //把json格式的数据转换为java对象

                   User u=g.fromJson(jsonString,User.class);

                   System.out.println(u);

 

       //输出结果:User [name=tom, age=23, address=北京]

 

                  

                   //java对象的信息转换为json字符串

                   jsonString=g.toJson(u);

                   System.out.println(jsonString);

 

      //输出结果:{"name":"tom","age":23,"address":"北京"}

    

                  

    //2.json(数组)字符串和java对象数组间的相互转换

                  

                   //把java的数组转为json格式字符串

                   jsonString=g.toJson(us);

                   System.out.println(jsonString);

                  

        //输出结果:

                   [

                      {"name":"艾迪森","age":25,"address":"北京"},

                      {"name":"安迪","age":23,"address":"南京"},

                      {"name":"托马斯","age":21,"address":"上海"},

                      {"name":"爱丽丝","age":22,"address":"郑州"}

                   ]

 

         

                   us=null;

                   //把json数组中的数据转为java数组对象

                   us=g.fromJson(jsonString, User[].class);

                   for(User uu:us){

                            System.out.println(uu);

                   }

 

         //输出结果:

              User [name=艾迪森, age=25, address=北京]

               User [name=安迪, age=23, address=南京]

              User [name=托马斯, age=21, address=上海]

              User [name=爱丽丝, age=22, address=郑州]

 

 

                  

    //3.json(数组)字符串和java泛型集合对象List间的相互转换

                  

                   //把list中的元素转为json格式数组

                   jsonString=g.toJson(users);

                   System.out.println(jsonString);

   

        //输出结果:同数组

                   [

                      {"name":"艾迪森","age":25,"address":"北京"},

                      {"name":"安迪","age":23,"address":"南京"},

                      {"name":"托马斯","age":21,"address":"上海"},

                      {"name":"爱丽丝","age":22,"address":"郑州"}

                   ]

           

                  

                   users.clear();

                   //把json数组中的数据转为java集合对象list

                   TypeToken<List<User>> typeToken=new TypeToken<List<User>>(){};

                   Type type=typeToken.getType();

 

                   //如果使用了泛型集合就要使用type,指定泛型的具体类型。

                   users=g.fromJson(jsonString,type);

                   for(User uu:users){

                            System.out.println(uu);

                   }

 

        //输出结果:同数组

                    User [name=艾迪森, age=25, address=北京]

                     User [name=安迪, age=23, address=南京]

                    User [name=托马斯, age=21, address=上海]

                    User [name=爱丽丝, age=22, address=郑州]    

 

                  

    //4.json(对象)字符串和java泛型集合对象Map间的相互转换 

                  

                   //把map的中的数据转为json格式

                   jsonString=g.toJson(maps);

                   System.out.println(jsonString);

        

        //输出结果:

                {  

                  "1003":{"name":"托马斯","age":21,"address":"上海"},

                  "1004":{"name":"爱丽丝","age":22,"address":"郑州"},

                  "1001":{"name":"艾迪森","age":25,"address":"北京"},

                  "1002":{"name":"安迪","age":23,"address":"南京"}

                 }

                                    

                   maps.clear();

                   //把json数组中的数据转为java集合对象

                   TypeToken<Map<String,User>> typeTokenMap=new TypeToken<Map<String,User>>(){};

                   Type typeMap=typeTokenMap.getType();

                   //如果使用了泛型集合就要使用type,指定泛型的具体类型。

                   maps=g.fromJson(jsonString,typeMap);

                   for(Map.Entry<String, User> uu:maps.entrySet()){

                            System.out.println(uu.getValue());

                   }

 

 

        //输出结果:

                   User [name=托马斯, age=21, address=上海]

                   User [name=爱丽丝, age=22, address=郑州]

                    User [name=艾迪森, age=25, address=北京]

                   User [name=安迪, age=23, address=南京]

           

本文版权归传智播客Android培训学院所有,欢迎转载,转载请注明作者出处。谢谢!

作者:传智播客Android培训学院

首发:http://www.itcast.cn/android/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: