Java解析(讀取)Json數(shù)據(jù){}、[{}](轉(zhuǎn))

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ù)傳輸。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容