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

来源:互联网 发布:大数据技术书籍推荐 编辑:程序博客网 时间:2024/06/04 20:11

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;...
*多层嵌套和上面这个类似,就是在多创建几个类而已
原创粉丝点击