在上面文章中,主要介绍了xml文件的解析,具体内容参见:
这篇文章主要介绍JSON中文件的解析方法。
JSON文件格式如下:
[
{ "firstName":"Bill" , "lastName":"Gates" },
{ "firstName":"George" , "lastName":"Bush" },
{ "firstName":"Thomas" , "lastName":"Carter"}
]
一.使用JSONObject解析。
public void pareseJSONWithJSONObject(String data){
try {
JSONArray jsonArray = new JSONArray(data);
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject jsonObject = jsonArray.getJSONObject(i);
Iterator iterator = jsonObject.keys();
while (iterator.hasNext()){
String key = (String) iterator.next();
String value = jsonObject.getString(key);
Log.e("Mylog","key: " + key + ", value:" + value);
}
}
} catch (JSONException e) {
e.printStackTrace();
}
}
同样,上述方法中,传入的data是json格式的字符串。
首先,将json数据保存到JSONArray中,然后遍历这个JSONArray,取出每一个jsonObject的对象。再取出每个jsonObject的key与value,用log打印出来即可。
二.使用GSON解析。
使用GSON(google提供的开源库)可以使解析更加的简单。
2.1添加依赖到app/build.gradle中
dependencies {
compile 'com.google.code.gson:gson:2.8'
}
2.2将JSON格式的字符串映射为一个对象。
比如一段JSON格式的数据:{"name" : "YuanYQ" , "age": "25","country" : "China"}就可以定义一个Person类,然后加入name,age,country三个字段。
public class Person {
private String name;
private int age;
private String country;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getCountry() {
return country;
}
public void setCountry(String country) {
this.country = country;
}
}
2.3调用gson对象来解析。
Gson gson = new Gson();
Person person = gson.fromJson(data,Person.class);
不过上面是一个json对象的解析,如果是json数组的话,就用:
Gson gson = new Gson();
List<Person> person = gson.fromJson(data,new TypeToken<List<Person>>(){}.getType());
我们需要借助TypeToken,将解析后的数据放入到List<Person>中。
关于网络数据xml与json的解析已经全部完毕!