解析json数据有很多种方法,可以使用官方提供的JSONObject,也可以使用谷歌的开源库GSON,另外,一些第三方的开源库如Jackson,FastJSON等也非常不错。接下来主要学习前两种解析方式的用法。
JSONObject
json数据:
[{"id":"5", "version":"2.1", "name":"c book"},
{"id":"6", "version":"3", "name":"java"},
{"id":"8", "version":"4.0", "name":"android"}]
private void parseJsonWithJSONObject(String jsonData){
try {
JSONArray jsonArray = new JSONArray(jsonData);
for (int i = 0; i < jsonArray.length(); i++){
JSONObject jsonObject = jsonArray.getJSONObject(i);
String id = jsonObject.getString("id");
String name = jsonObject.getString("name");
String version = jsonObject.getString("version");
Log.d("jsonInfo", "id:" + id + ", name:" + name + ", version:" + version);
}
} catch (Exception e) {
e.printStackTrace();
}
}
GSON
添加gson库:compile 'com.google.code.gson:gson:2.7'
JSON格式数据:{"name" : "Tom", "age" : 20}
定义一个Person类,并加入name和age两个字段,然后通过以下方式将JSON数据解析成一个Person对象:
Gson gson = new Gson();
Person person = gson.fromJson(jsonData, Person.class);
如果是一段JSON数组,可以借助TypeToken将其解析成一个Person集合:
List<Person> persons = gson.fromJson(jsonData, new TypeToken<List<Person>>(){}.getType());