http://www.cnblogs.com/xudong-bupt/archive/2013/05/06/3060745.html
以前看過書上說,XML是web service間傳輸信息的標(biāo)準(zhǔn)格式吧,就看了看XML。最近在做個網(wǎng)站,又說是有了JSON,第一回聽說就看了看,總結(jié)總結(jié)一下。
1.JSON介紹
JSON比XML簡單,主要體現(xiàn)在傳輸相同信息的情況下,文件的大小不同。
JSON只用于傳輸信息,XML還可以用于配置文件的使用。
JSON中的符號主要有: " , [ {:
2.JSON中的數(shù)組和對象
2.1數(shù)組(JSONArray)
數(shù)組用一對[],表示存放的是一般的數(shù)組數(shù)據(jù)。
如:["11","22","33"],表示這是一個JSONArray數(shù)組,里面有3個數(shù)據(jù):”11“,”22“,”33“。當(dāng)然可以是復(fù)雜的數(shù)據(jù),就是所謂的嵌套定義吧。
2.對象(JSONObject)
對象用一對{},來表示其中JSON通用的”鍵-值“對。
如:{"sex1":"female","name0":"zhangsan"},表示的是一個JSON對象,里面有兩組數(shù)據(jù)(鍵值對),sex1=female,name0=zhangsan。當(dāng)然這里鍵對應(yīng)的數(shù)據(jù)值,可以是復(fù)雜的JSON對象或者數(shù)組。
3.代碼示例
3.1基本的JSONArray與JSONObject操作

import net.sf.json.JSONArray;import net.sf.json.JSONObject;publicclass ObjectAndArray1 {
? ? publicstaticvoid main(String args[])
? ? {
? ? ? ? JSONObject jsonObj? =new JSONObject();
? ? ? ? jsonObj.put("name0", "zhangsan");
? ? ? ? jsonObj.put("sex1", "female");
? ? ? ? System.out.println(jsonObj);? ? //輸出為:{"sex1":"female","name0":"zhangsan"}? ? ? ?
? ? ? ? JSONArray jsonArray =new JSONArray();
? ? ? ? jsonArray.add("11");
? ? ? ? jsonArray.add("22");
? ? ? ? jsonArray.add("33");
? ? ? ? System.out.println(jsonArray);? ? //輸出為:["11","22","33"]? ? }
}

3.2由java自帶的數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換為JSON文本

import java.util.HashMap;import java.util.Map;import net.sf.json.JSONArray;import net.sf.json.JSONObject;publicclass ObjectAndArray2{
? ? publicstaticvoid main(String args[])
? ? {
? ? ? ? //可以由數(shù)組,列表等生成JSONArrayString list[]={"11","22"};
? ? ? ? JSONArray jsonarray = JSONArray.fromObject(list);
? ? ? ? jsonarray.add("33");
? ? ? ? System.out.println(jsonarray);? ? //輸出為:["11","22","33"]
? ? ? ? //可以由Map生成JSONObjectMap map=newHashMap();
? ? ? ? map.put("NO1", "第一個");
? ? ? ? map.put("NO2", "第二個");
? ? ? ? map.put("NO3", jsonarray);
? ? ? ? JSONObject jsonObj? = JSONObject.fromObject(map);
? ? ? ? System.out.println(jsonObj);? ? //輸出為:{"NO3":["11","22","33"],"NO2":"第二個","NO1":"第一個"}? ? }
}

3.3讀取JSON文本
JSONArray必須用下標(biāo)讀取內(nèi)部數(shù)據(jù)。
JSONObject必須用”鍵“讀取對應(yīng)的”值“。

import net.sf.json.JSONArray;import net.sf.json.JSONObject;publicclass ObjectAndArray {
? ? publicstaticvoid main(String args[])
? ? {
? ? ? ? JSONArray jsonarray;
? ? ? ? JSONObject jsonObj;
? ? ? ? //讀取JSONArray,用下標(biāo)索引獲取String array="[\"11\",\"22\",\"33\"]";
? ? ? ? jsonarray = JSONArray.fromObject(array);
? ? ? ? System.out.println(jsonarray.getString(1));//輸出為:22
? ? ? ? //讀取JSONObjectString object="{\"NO1\":[\"44\",\"55\",\"66\"],\"NO2\":{\"NO1\":\"第一個\"}}";
? ? ? ? jsonObj? = JSONObject.fromObject(object);
? ? ? ? System.out.println(jsonObj.get("NO1"));//輸出為:["44","55","66"]? ? ? ?
? ? ? ? jsonarray = (JSONArray)(jsonObj.get("NO1"));
? ? ? ? System.out.println(jsonarray.getString(1));//輸出為:55
? ? ? ? //用"鍵"獲取值jsonObj=(JSONObject)jsonObj.get("NO2");
? ? ? ? System.out.println(jsonObj);? ? //輸出為:{"NO1":"第一個"}? ? ? ?
? ? }
}

4.總結(jié)
JSON就是一種數(shù)據(jù)的組織形式,可以說是XML的簡化版本,只用于數(shù)據(jù)傳輸。