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");
一、JSONObject和JSONArray的數據表示形式
JSONObject的數據是用 { } 來表示的,
例如: { "id" : "123", "courseID" : "huangt-test", "title" : "提交作業", "content" : null }
而JSONArray,顧名思義是由JSONObject構成的數組,用 [ { } , { } , ...... , { } ] 來表示
例如: [ { "id" : "123", "courseID" : "huangt-test", "title" : "提交作業" } , { "content" : null, "beginTime" : 1398873600000 "endTime" } ] ;
表示了包含2個JSONObject的JSONArray。
可以看到一個很明顯的區別,一個用的是 { } ,一個最外面用的是 [ ] ;
二、如何從字符串String獲得JSONObject對象和JSONArray對象
JSONObject jsonObject = new JSONObject ( String str);
JSONArray jsonArray = new JSONArray(String str ) ;
三、如何從JSONArray中獲得JSONObject對象
大家可以把JSONArray當成一般的數組來對待,只是獲取的數據內數據的方法不一樣
JSONObject jsonObject = (JSONObject)jsonArray.get(i);
JSONObject jsonObject = jsonArray.getJSONObject(i) ;
兩者都可。第一種注意轉換
四、獲取JSON內的數據
int jid= jsonObject.getInt ( "id" ) ; // 這里的jid得到的數據就是123.
String jcourse=jsonObject.getString( " courseID") ; // 這里的jcourse得到的數據就是huangt-test.
Strirng jcourse = jsonObject.get("courseID").toString();
五、一般地 為鍵值對
eg:{ name:"xm", value:"張三"}
String jname = null;
if(jsonObject.get("name").equals("xm")){
jname=jsonObject.get("value").toString();
}
六: JSON.parse( str ) --> 把字符串轉為JSON對象
JSON.stringify( obj ) -->把對象解析為字符串