Android Studio JSON数据的初始化与解析访问 (JSON对象、JSON数组)
Android Studio中有JSONObject和JSONArray两种数据结构。JSONObject是数据对象,是下图展示的类型。即一个{}中有若干个属性和属性对应的值。
JSONArray是json数组。为如下的形式。一个[]中有若干个JSON对象,可看做数组的元素。
一、Json的初始化
如果要初始化一个Json对象,逐次使用JSONObject.put()函数即可。函数的第一个参数为属性名,第二个参数为属性的值。一个Json对象中如有多个属性,对一个Json对象连续使用若干次JSONObject.put()函数即可。
JSONObject json1 = new JSONObject();
JSONObject json2 = new JSONObject();
try {
json2.put("2", 2);
json2.put("3", 3);
json1.put("one", "xxx");
json1.put("two", "yyy");
json1.put("four", json2);
} catch (JSONException e) {
e.printStackTrace();
}
Log.e("结果",json1.toString());//以字符串形式输出
执行上面的代码初始化JSON变量,可以发现JSON1的结果如下所示。json对象中某个元素对应的值可以是数字、字符串,也可以是JSON变量。
JSON数组可以看做是一个数组,数组的元素是JSON对象。因此JSON数组的初始化方法类似。先用上述方法初始化每个json对象。再初始化一个新的JSON数组,用JSONArray.put()函数把前面初始化的JSON对象压入数组。
以下面的代码为例:
JSONObject json0 = new JSONObject();//json对象(数组元素)
JSONObject json1 = new JSONObject();//json对象(数组元素)
JSONArray json = new JSONArray();//json数组
try {
json0.put("2", 2);
json0.put("3", 3);//初始化元素0的json变量
json1.put("one", "xxx");
json1.put("two", "yyy");
json1.put("four", json0);//初始化元素1的json变量
json.put(json0);//元素0压入数组
json.put(json1);//元素1压入数组
} catch (JSONException e) {
e.printStackTrace();
}
Log.e("结果",json.toString());//字符串形式输出
执行后JSON数组的值如下,有两个数组元素,每个数组元素都是JSON对象。
二、JSON的访问
JSON型是数据,无论是JSON对象还是JSON数组,都可以转化为字符串的形式。前面的输出均通过JsonObject/JsonArray.toString(),将JSON转化为了字符串。
如果想对JSON对象的某个确定的属性或元素进行访问,可以使用getJSONObject()和getString()函数实现。getJSONObject可以获取json对象中某个特定属性对应的json对象,参数为属性名。getString()可以获取json对象中某个特定属性对应的字符串,参数也为属性名。
在使用时要理清JSON对象的结构,确定需要提取的内容是数据元素还是JSON对象。以这个JSON对象为例。想要访问到属性为“four”对应的这个JSON对象中属性为”2“的这个元素,需要使用的代码如下,为JSONObject.getJSONObject("four").getString("2"):
try {
Log.e("结果",json1.getJSONObject("four").getString("2").toString());
} catch (JSONException e) {
e.printStackTrace();
}
对JSON数组进行访问的时候,可以先使用getJSONObject()函数提取某一个数组元素,括号中的参数为元素序号(数组下标),再使用上面访问JSON对象的方法。以下面这个json数组为例:
使用下面的代码对上面的json数组进行操作,会访问到(输出)第0个数组元素,即一个json对象。注意,下面的代码:json.getJSONObject(0)已经提取出json对象了,toString()只是用于将JSON对象转化为字符串,用于输出。
try {
Log.e("结果",json.getJSONObject(0).toString());
} catch (JSONException e) {
e.printStackTrace();
}//json.getJSONObject(0)以及提取出json对象了,toString()只是用于转化为字符串,用于输出
三、总结
1.常用的关于操作JSON数据类型的函数:put()、getJSONObject()、getString()。
2.JSON数据类型通过上述方法进行提取后,数据类型全部变成了字符串,需要转化回原来的数据类型。
3.使用JSON型数据的各项操作时需要使用一系列异常处理,在Android Studio中均予以了提示,按照系统提示操作即可。