1.JSONObject : json对象,就是一个键对应一个值,数据是用 { } 来表示的,例如:{”id”:1 , “username”:”wp”}
JSONArray: json数组,数据是是由JSONObject构成的数组,用 [ { } , { } , ...... , { } ] 来表示,只不过数组里面的项也是json键值对格式的
2.JSONObject与JSONArray使用的场景区别;
想通过键值对的形式获取数据,使用JSONObject。
如果后台查询的是某个bean的list集合向前端页面传递,使用JSONArray。
3.JSONObject与JSONArray 创建方法区别;
//创建JsonObject第一种方法
JSONObject jsonObject = new JSONObject();
jsonObject.put("name", "xuhang"); j
System.out.println("jsonObject1:" + jsonObject);
//创建JsonObject第二种方法
HashMap<String, String> hashMap = new HashMap<String, String>();
hashMap.put("name", "xuhang");
System.out.println("jsonObjectJSONArray创建的方法
//创建一个JsonArray方法1
JSONArray jsonArray = new JSONArray();
jsonArray.add(0, "xuhang"); //JSONObject对象中添加键值对
jsonArray.add(1, "426"); //JSONObject对象中添加键值对
jsonArray.add(2, "624"); //JSONObject对象中添加键值对
System.out.println("jsonArray1:" + jsonArray);
//创建JsonArray方法2
ArrayList<String> arrayList = new ArrayList<String>();
arrayList.add("xuhang"); //将JSONObject对象添加到Json数组中
arrayList.add("426"); //将JSONObject对象添加到Json数组中
arrayList.add("624"); //将JSONObject对象添加到Json数组中
System.out.println("jsonArray2:" + JSONArray.fromObject(arrayList));
4.获取方式不同
获取JSONObject中值:String userName = jsonObject.getString("UserName");//key值
获取JSONArray中的值:String userName = arrayList.getString("2");//角标值
5.解析JSON不同
System.err.println("++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++");
String jsonString = "{\"name\":\"xuhang\",\"age\":\"27\",\"workIn\":\"teacher\",\"Array\":[\"xuhang\",\"33\",\"tools\"]}";
//将Json字符串转为java对象
JSONObject obj = JSONObject.fromObject(jsonString);
//获取Object中的UserName
if (obj.has("name")) {
System.out.println("name:" + obj.getString("name"));
}
//获取ArrayObject
if (obj.has("Array")) {
JSONArray transitListArray = obj.getJSONArray("Array");
for (int i = 0; i < transitListArray.size(); i++) {
System.out.print("Array:" + transitListArray.getString(i) + " ");
}
}
举个例子说明,如下:
[{name1:{name2:{name3:'value1',name4:'value2'}}},{}]
取出name4值过程步骤:1,将以上字符串转换为JSONArray对象;2,取出对象的第一项,JSONObject对象;3,取出name1的值JSONObject对象;4,取出name2的值JSONObject对象;5,取出name4的值value2。
示例中json数组格式的字符串可以通过方法直接转换为JSONArray的格式:
JSONArray.fromObject(String)
JSONArray getJsonArray=JSONArray.fromObject(arrayStr);//将结果转换成JSONArray对象的形式
JSONObject getJsonObj = getJsonArray.getJSONObject(0);//获取json数组中的第一项
String result=getJsonObj.getJSONObject("name1").getJSONObject("name2").getJSONObject("name4");