Java-json解析:GSON解析,java bean 编写

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_38345791/article/details/72961473

Java-json解析:GSON解析,java bean 编写

GSON是谷歌提供的开源库,用来解析Json格式的数据,非常好用。如果要使用GSON的话,则要先下载gson-2.6.2.jar这个文件,如果是在Android项目中使用,则在Android项目的libs目录下添加这个文件即可;如果是在Java项目中,则把gson-2.6.2.jar先添加到当前项目的任意一个包中,然后右键点击这个jar包 -> 构建路径 -> 添加至构建路径。这样准备工作就做好了。
Android Studio只需这句话即可:
compile 'com.google.code.gson:gson:2.6.2'

(一)简单的Json数据的解析

比如有如下Json数据:
{
“name”:”ABC”,
“age”:20
}

1.定义一个类
 class Person{
     public String name;//注意:此对象的变量名是json的key的名字
     public int age;//json的key对应的value是什么类型就创建什么类型的变量
 }
 2、创建GSON对象并解析:
Gson gson = new Gson();
Person person = gson.fromJson("json返回的字符串",Person.class);

//
String pName = person .name;
int pInt = person .age;
3、然后使用Person对象直接调用就可以获取到数据了。

(二)返回有数组和单层嵌套的Json数据解析

1.比如:
{
    "data":[
         {
             "name":"ABC",
              "age":21
          },
          {
             "name":"CBA",
              "age":26
          }
    ]
}
1.定义一个PersonBase类
class PersonBase{
    //变量名同上,遇到数组就直接创建一ArrayList
    public ArrayList<Person> data;

    //遇到大括号就直接创建一个类,类名随意
    class Person{
         public String name;//变量名同上
         public int age;//变量名同上
    }
}
 2、创建GSON对象并解析:
Gson gson = new Gson();
PersonBase pb= gson.fromJson("json返回的字符串",PersonBase.class);
ArrayList<Person> data = pb.data;

//
Person p = data.get(0);
...p.name;
...

(三)返回数组和双重嵌套的json数据

1.json数据:
{
    "error": 0,
    "data": [
        {
            "room_id": "0000",
            "room_src": "",
            "vertical_src": "",
            "isVertical": 1,
            "cate_id": 201,
            "room_name": "今天都给我送荧光棒好咩,么么哒",
            "owner_uid": "80263404",
            "nickname": "Sylvia",
            "online": 11886,
            "url": "",
            "game_url": "",
            "game_name": "",
            "avatar": "",
            "avatar_mid": "",
            "avatar_small": "",
            "jumpUrl": "",
            "icon_data": {
                "status": 5,
                "icon_url": "",
                "icon_width": 0,
                "icon_height": 0
            }
        },
        {
            "room_id": "000000",
            "room_src": "",
            "vertical_src": "",
            "isVertical": 1,
            "cate_id": 201,
            "room_name": "外面下着雨  你在干嘛呢",
            "owner_uid": "132516158",
            "nickname": "Dove",
            "online": 3524,
            "url": "",
            "game_url": "",
            "game_name": "",
            "avatar": "",
            "avatar_mid": "",
            "avatar_small": "",
            "jumpUrl": "",
            "icon_data": {
                "status": 5,
                "icon_url": "",
                "icon_width": 0,
                "icon_height": 0
            }
        },
        ...
}
2.创建对应的类
public class LiveBase {
    public ArrayList<ChildrenBean> data;

    public class ChildrenBean{
        public String avatar;
        public String avatar_mid;
        public String avatar_small;
        public int cate_id;
        public String game_name;
        public String game_url;
        public int isVertical;
        public String nickname;
        public int online;
        public String owner_uid;
        public String room_id;
        public String room_name;
        public String room_src;
        public String url;
        public String vertical_src;

        /*因为json返回的数据,第一层嵌套的类里面又包含了一个对象
        *所以必须在这里创建一个对象
        *而对象的名字已经给定,所以不能随自己的所好起
        **/
        public IconDataBase icon_data;
    }

    public class IconDataBase{
        public String icon_height;
        public String icon_url;
        public String icon_width;
        public int status;
    }
}

这里写图片描述

 2、创建GSON对象并解析:
Gson gson = new Gson();
LiveBase  lb= gson.fromJson("json返回的字符串",LiveBase .class);
ArrayList<ChildrenBean> data = lb.data;
ChildrenBean cb = data.get(0);
...
String url = cb.url;
...
IconDataBase icon_data = cb.icon_data;
...
... = icon_data.icon_url;
...
*多层嵌套和上面这个类似,就是在多创建几个类而已

猜你喜欢

转载自blog.csdn.net/qq_38345791/article/details/72961473