对于现在的应用开发,Server端一般都会将API以Json的形式返回给客户端,客户端所做的就是能准确的解析这些Json。还记得以前那种辛辛苦苦的一个个字段的解析么?
数据准备:

1
2
3
4
5
6
7
8
9
10
11
12
13
14

{
"phone": [
"12345678",
"87654321"
],
"name": "yuanzhifei89",
"age": 100,
"address": {
"country": "china",
"province": "jiangsu"
},
"married": false
}

以前的咱们怎么解析:

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

public void user(String json) {

try {
JSONObject mObject = new JSONObject(json);

String name = mObject.optString("name");

int age = mObject.optInt("age");

boolean isMarried = mObject.getBoolean("married");


JSONObject address = mObject.optJSONObject("address");

if (address != null) {
String country = address.optString("country");
String province = address.optString("province");
}
……


} catch (JSONException e) {
e.printStackTrace();
}


}

这个是要考虑字段和Json的数据结构的,哎,这样辛辛苦苦写了一上午可能也搞不定几个接口,太累了。
还好有Gson这个Google开发的工具类,国内有好多人使用不用担心,CSDN Gson介绍

下载代码瞬间就是一个Java的对应关系

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public class Person {
private String name;
private int age;


private boolean isMarried;
private ArrayList<String> phone;
private Address address;


public class Address {
private String country;
private String province;


}


}

解析这个json字符串JSON_DATA

1
2
3

Gson gson = new GsonBuilder().create();
gson.fromJson(JSON_DATA,Person.class);

像上面的person返回的是一个list的形式的,只需要改动解析的过程即可:

1
2
Type listType = new TypeToken<ArrayList<Person>>(){}.getType();
ArrayList<Person> mPersonList = new Gson().fromJson(JSON_DATA, listType);

结合GsonFormat疗效更好哦。