android-gson(解析json对象,数组等)

发表于:,更新于:,By Sally
大纲
  1. 1. gson 解析json对象
  2. 2. gson 解析json数组
  3. 3. gson 解析json对象中包含json数组

Android利用Gson解析嵌套多层的Json
Gson解析复杂JSON对象

gson 解析json对象


  • key: {} 用对象
  • key: [ {}, {}, {} ] 用数组

  • json
1
2
3
4
5
6
7
8
9
{
id: 7,
name: "北汽新能源-EV系列",
price: 8.69,
color: "阿尔卑斯白,米兰银",
model: "2015款 EV160 轻快版:8.69,2015款 EV160 轻秀版:9.89,2015款 EV200 轻快版:11.89,2015款 EV200 轻秀版:13.69,2015款 EV200 轻享版:15.69",
recommand: true,
hide: false,
}
  • bean
1
2
3
4
5
6
7
8
9
10
11
public class ProductBean implements Serializable {
private int id;
private String name;
private double price;
private String color;
private String model;
private boolean recommand;
private boolean hide;
...
// get() set() toString() 等方法
}
  • gson解析json
1
2
3
// fromJson() :参数1,json字符串, 解析目标对象
Gson gson = new Gson();
ProductBean bean = gson.fromJson(str, ProductBean.class);

gson 解析json数组

  • json
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
[
{
id: 1,
tp: "iPhone",
name: "iPhone 6s 国行正品",
logo: {
url: "aldfha;ldf"
},

model1: "玫瑰粉 金色 银色 深空灰",
model: "16G:5288 64G:6088 128G:6888",
price: 5288,
product_logos: [
{
id: 13,
product_id: 3,
logo: {
url: "http://image.uubpay.com/uploads/product_logo/logo/13/iphonedes01.jpg"
},

created_at: "2015-11-13T08:35:08.000+08:00",
updated_at: "2015-11-13T08:35:08.000+08:00"
},

]

},

{
id: 3,
tp: "iPhone",
name: "iPhone 6s Plus 国行正品",
logo: {
url: "aldfha;ldf"
},

model1: "玫瑰粉 金色 银色 深空灰",
model: "16G:6088 64G:6888 128G:7788",
price: 6088,
product_logos: [
{
id: 13,
product_id: 3,
logo: {
url: "http://image.uubpay.com/uploads/product_logo/logo/13/iphonedes01.jpg"
},

created_at: "2015-11-13T08:35:08.000+08:00",
updated_at: "2015-11-13T08:35:08.000+08:00"
},

]

}

]

  • bean
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public class ProductBean implements Serializable {
private int id;
private String tp;
private String name;
private Logo logo;
private String model1;
private String model;
private double price;
private List<ProductLogo> product_logos;
...
// get() set() toString() 方法

public static class Logo implements Serializable {
private String url;
...
}
public static class ProductLogo implements Serializable {
private int id;
private int product_id;
private Logo logo;
...
}
}
  • gosn解析json
1
List<ProductBean> list = new Gson().fromjson(jsonString, new TypeToken<List<ProductBean>>() {}.getType());

gson 解析json对象中包含json数组

  • json
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
{
recommands: [
{
id: 7,
category_id: 11,
name: "北汽新能源-EV系列",
logo: {},
color: "阿尔卑斯白,米兰银",
model: "2015款 EV160 轻快版:8.69,2015款 EV160 轻秀版:9.89,2015款 EV200 轻快版:11.89,2015款 EV200 轻秀版:13.69,2015款 EV200 轻享版:15.69",
car_logos: [
{
id: 23,
car_id: 7,
logo: {
url: "http://image.uubpay.com/uploads/admin/car_logo/logo/2016-01-15/23/550x412_ACFP6TMI5THI0008.jpg"
},

created_at: "2016-01-15T16:29:26.000+08:00",
updated_at: "2016-01-15T16:29:26.000+08:00"
},

{},
{},
{}
]

}

],

brands: [
{
id: 31,
name: "雪佛兰",
logo: {
url: "http://image.uubpay.com/uploads/admin/car_brand/logo/2016-03-18/31/U98P33T148D133661F2100DT20060717171902.jpg"
},

hide: false,
},

{
id: 31,
name: "雪佛兰",
logo: {
url: "http://image.uubpay.com/uploads/admin/car_brand/logo/2016-03-18/31/U98P33T148D133661F2100DT20060717171902.jpg"
},

hide: false,
},

{ ... },
{ ... },
]

}

  • bean
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
public class ProductBean implements Serializable {
private List<Recomman> recommands;
private List<Brand> brands;
...

public static class Recommans implements Serializable {
private int id;
private int category_id;
private String name;
private Logo logo;
private String color;
private String model;
private List<CarLogo> car_logos;
...
}
public static class Brand implements Serializable {
private int id;
private String name;
private Logo logo;
private boolean hide;
...
}
public static class Logo implements Serializable {
private String url;
...
}
public static class CarLogo implements Serializable {
private int id;
private int car_id;
private Logo logo;
...
}
}
  • gson解析json
1
ProductBean bean = new Gson().fromJson(jsonString, new TypeToken<ProductBean>() {}.getType());