1.JSON介紹
JSON比XML簡單,主要體現在傳輸相同信息的情況下,文件的大小不同。
JSON只用於傳輸信息,XML還可以用於配置文件的使用。
JSON中的符號主要有: " , [ {:
2.JSON中的數組和對象
1.數組(JSONArray)
數組用一對[],表示存放的是一般的數組數據。
如:["11","22","33"],表示這是一個JSONArray數組,里面有3個數據:”11“,”22“,”33“。當然可以是復雜的數據,就是所謂的嵌套定義吧。
2.對象(JSONObject)
對象用一對{},來表示其中JSON通用的”鍵-值“對。
如:{"sex":"female","name":"zhangsan"},表示的是一個JSON對象,里面有兩組數據(鍵值對),sex=female,name=zhangsan。當然這里鍵對應的數據值,可以是復雜的JSON對象或者數組。
3.代碼示例
基本的JSONArray與JSONObject操作
import net.sf.json.JSONArray; import net.sf.json.JSONObject; public class ObjectAndArray1 { public static void main(String args[]) { JSONObject jsonObj = new JSONObject(); jsonObj.put("name", "zhangsan"); jsonObj.put("sex", "female"); System.out.println(jsonObj); //輸出為:{"sex":"female","name":"zhangsan"} JSONArray jsonArray = new JSONArray(); jsonArray.add("11"); jsonArray.add("22"); jsonArray.add("33"); System.out.println(jsonArray); //輸出為:["11","22","33"] } }
由java自帶的數據結構轉換為JSON文本
import java.util.HashMap; import java.util.Map; import net.sf.json.JSONArray; import net.sf.json.JSONObject; public class ObjectAndArray2{ public static void main(String args[]) { //可以由數組,列表等生成JSONArray String list[]={"11","22"}; JSONArray jsonArray = JSONArray.fromObject(list); jsonarray.add("33"); System.out.println(jsonarray); //輸出為:["11","22","33"] //可以由Map生成JSONObject Map<String,Object> map=new HashMap<String,Object>(); 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":"第一個"} } }
讀取JSON文本
JSONArray必須用下標讀取內部數據。
JSONObject必須用”鍵“讀取對應的”值“。
import net.sf.json.JSONArray; import net.sf.json.JSONObject; public class ObjectAndArray { public static void main(String args[]) { JSONArray jsonarray; JSONObject jsonObj; //讀取JSONArray,用下標索引獲取 String array="[\"11\",\"22\",\"33\"]"; jsonarray = JSONArray.fromObject(array); System.out.println(jsonarray.getString(1)); //輸出為:22 //讀取JSONObject String 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":"第一個"} } }