JSON的优势是体积更小,网络传输的时候可以省流量,但它语义性差。
新建get_data.json,放在XAMPP安装目录下的htdocs中
[
{"id":5,"version":5.5,"name":"Clash of Clans"},
{"id":6,"version":7.0,"name":"Boom Beach"},
{"id":7,"version":3.5,"name":"Clash Royale"}
]
使用JSONObject
MainActivity添加代码
//JSONObject解析JSON
private void parseJSONWithJSONObject(String responseData) {
try {
JSONArray jsonArray = new JSONArray(responseData);
int size = jsonArray.length();
for (int i = 0; i < size; i++) {
JSONObject jsonObject = jsonArray.getJSONObject(i);
String id = jsonObject.getString("id");
String name = jsonObject.getString("name");
String version = jsonObject.getString("version");
Log.e("MainActivity", "id is " + id);
Log.e("MainActivity", "name is " + name);
Log.e("MainActivity", "version is " + version);
}
} catch (Exception e) {
e.printStackTrace();
}
}
运行结果
使用GSON
添加依赖
implementation 'com.google.code.gson:gson:2.8.0'
GSON可以将一段JSON格式的字符串自动映射成一个对象
若是解析一段JSON数据如下,定义Person类,并添加name和age字段
{"name":"Tom","age":20}
解析代码为
Gson gson = new Gson();
Person person = gson.fromJson(jsonData,Person.class);
若解析的是JSON数组,需要借助TypeToken将期望解析成的数组类型传入到fromJson()方法中,解析代码如下
List<Person>people = gson.fromJson(jsonData,new TypeToken<List<Person>>(){}.getType());
新建App类
public class App {
private String id;