JSONArray和JSONObject对象之间的操作

有时间开发中经常会遇到一些在JSONArray和JSONObject对象之间转换的操作。两个类的API也为我们提供了相应的方法。

先看如何将JSONObject对象转化为JSONArray:

<pre name="code" class="java">public static void main(String[] args) {
		
		/**
		 * 将JSONObject对象转化为JSONArray
		 */
		JSONObject jo = new JSONObject();
		jo.put("张三", 23);
		jo.put("李四", 24);
		jo.put("王五", 26);
		JSONArray ja = JSONArray.fromObject(jo);
		System.out.println("JSONArray--->fromObject(JSONObject): "+ja);
		
	}


 输出: 
 

将JSONObject转化为JSONArray对象一般总能成功,但是,当需要把JSONArray转化JSONObject对象时,如果数据结构不对就容易抛出异常:

<span style="white-space:pre">		</span>/**
		 * 将JSONArray对象转化为JSONObject
		 */
		JSONObject jo1 = new JSONObject();
		jo1.put("张三", 23);
		jo1.put("李四", 24);
		jo1.put("王五", 26);
		JSONArray ja1 = JSONArray.fromObject(jo1);
		System.out.println(ja1);
		//如果此时再将JSONArray转为JSONObject则会报错
		JSONObject temp = JSONObject.fromObject(ja1);
错误异常:

<span style="white-space:pre">		</span>JSONArray ja2 = new JSONArray();
		ja2.add("张三");
		ja2.add("李四");
		ja2.add("王五");
		for(int i = 0; i < ja2.size(); i++) {
			JSONObject jsonObject = ja2.getJSONObject(i);
		}
错误异常:


抛出这些异常都是由JSONArray和JSONObject的数据结构所决定的,不过有时JSONArray中会包含有JSONObject对象格式的数据,这时我们怎么解析呢?其实,查看JSONArray和JSONObject的API可以发现,两者分别提供了getJSONArray(int index)、getJSONObject(int index)和getJSONArray(String key)、getJSONObject(String key)方法,来获取其中对应的数据。

比如我们遍历第一个例子中的JSONArray:

<span style="white-space:pre">		</span>/**
		 * 将JSONObject对象转化为JSONArray
		 */
		JSONObject jo = new JSONObject();
		jo.put("张三", 23);
		jo.put("李四", 24);
		jo.put("王五", 26);
		JSONArray ja = JSONArray.fromObject(jo);
		for(int i = 0; i < ja.size(); i++){
			System.out.println(ja.get(i));
		}

输出:

通过JSONArray的getJSONObject(int index)方法可以将其中JSON对象格式的数据取出。


你可能感兴趣的:(json,JSONObject,JsonArray)