版权声明:本文为博主原创文章,未经博主允许不得转载。 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;
...