JSON类型数据解析

JSON类型数据解析有很多种方式,官方指定的是JSONObject,还有Google的开源库GSON以及一些第三方开源库:Jackson、FastJSON等等。

JSONObject:
JSONObject解析数据是先new一个JSONArray对象,并且将所要解析的数据作为参数传入,然后通过这个对象的getJSONObject()方法获得一个JSONObject对象,最后通过JSONObject对象的getString()方法将数据的具体内容取出即可。
若需要解析的数据是一个JSON数组,只需将解析逻辑放入到for循环中即可。
例如:一段JSON类型数据如下:
[{“id”:”1”,”version”:”5.1”,”name”:”name1”}
{“id”:”2”,”version”:”5.2”,”name”:”name2”}
{“id”:”3”,”version”:”5.3”,”name”:”name3”}]
使用JSONObject解析:
JSONArray jsonArray=new JSONArray(jsonData); //jsonData为服务器返回的JSON类型数据
for(int i=0;i<jsonArray.length;i++){
JSONObject jsonObject=jsonArray.getJSONObject(i);
String id=jsonObject.getString(“id”); //getString()方法的参数为JSON类型数据的节点
String version=jsonObject.getString(“version”);
String name=jsonObject.getString(“name”);
}

GSON:
由于GSON没有被添加到官方指定的API中,所以使用GSON的时候还要添加库依赖,编辑app/build.gradle:
compile ‘com.google.code.gson:gson:2.8.1’
GSON对JSON进行解析时,是将JSON格式的字符串映射成一个对象,所以需要我们编写一个实体类来存放数据,若解析的是一段JSON格式的数组,要使用TypeToken将期望解析成数据类型传入到fromJson()方法中。
例如:一段JSON格式数组:
[{“age”:”10”,”name”:”Tonny”}
{“age”:”20”,”name”:”Edson”}
{“age”:”30”,”name”:”Dylan”}]
使用GSON进行解析:
实体类
解析逻辑