} JSON (JavaScript Object Notation) 是一種輕量級的資料交換格式,易於人閱讀和編寫,同時也易於機器解析和產生,而且它是基於JavaScript 的。 JSON採用完全獨立於語言的文字格式設定,但是也使用了類似於C語言家族的習慣(包括C, C++, C#, Java, JavaScript 等)。這些特性使JSON成為理想的資料交換語言
} JSON有兩種結構:
◦ “名/值”對的集合(A collection of name/value pairs)。在不同的語言中,它被理解為對象,結構,關聯陣列等
◦ 值的有序列表(An ordered list of values)。在大部分語言中,它被理解為數組
這些都是常見的資料結構。事實上大部分現代電腦語言都以某種形式支援它們。這使得一種資料格式在同樣基於這些結構的程式設計語言之間交換成為可能
下面的JSON表示成對的名稱和數值:
{ "firstName": "Brett" }
多個名稱/值對串在一起:這是一個對象,有三個屬性,分別是firstName,lastName,email
{ "firstName": "Brett", "lastName":"McLaughlin", "email": "brett@newInstance.com" }
從文法方面來看,這與成對的名稱和數值相比並沒有很大的優勢,但是在這種情況下 JSON
更容易使用,而且可讀性更好
當需要表示一組值時,JSON 不但能夠提高可讀性,而且可以減少複雜性:
{ “employees": [
{ "firstName": "Brett", "lastName":"McLaughlin", "email": "brett@newInstance.com" },
{ "firstName": "Jason", "lastName":"Hunter", "email": "jason@servlets.com" },
{ "firstName": "Elliotte", "lastName":"Harold", "email": "elharo@macfaq.com" }
] }
這比相應的XML格式表示的資料更加簡潔:
相應的XML格式:
<employees>
< employee >
<firstName>Brett</firstName>
<lastName>McLaughlin</lastName>
<email>brett@newInstance.com</email>
</ employee >
< employee >
<firstName>Jason</firstName>
<lastName>Hunter</lastName>
<email>jason@servlets.com</email>
</ employee >
< employee >
<firstName>Elliotte</firstName>
<lastName>Harold</lastName>
<email>elharo@macfaq.com</email>
</employee>
</ employees >
} 可讀性
◦ JSON和XML的可讀性可謂不相上下,XML略佔上風
} 可擴充性
◦ XML天生有很好的擴充性,JSON當然也有,沒有什麼是XML能擴充,JSON不能的。
} 編碼難度
◦ XML有豐富的編碼工具,比如Dom4j、JDom等,JSON也有json.org提供的工具,但是JSON的編碼明顯比XML容易許多,即使不藉助工具也能寫出JSON的代碼,可是要寫好XML就不太容易了
} 解碼難度
◦ XML的解析得考慮子節點父節點關係,讓人頭昏眼花,而JSON的解析難度幾乎為零。
} 流行度
◦ XML已經被業界廣泛的使用,而JSON才剛剛開始,但在Ajax領域,JSON憑藉自身的優勢有可能最終取代XML
JSON是JavaScript原生格式,這意味著在JavaScript中處理JSON資料不需要任何特殊的 API 或工具包。
} 將JSON資料賦值給變數:
var company =
{ “employees": [
{ "firstName": "Brett", "lastName":"McLaughlin", "email": brett@newInstance.com" },
{ "firstName": "Jason", "lastName":"Hunter", "email": "jason@servlets.com" },
{ "firstName": "Elliotte", "lastName":"Harold", "email": "elharo@macfaq.com" }
]
};這樣將建立一個JavaScript對象
以JavaScript對象的方式訪問資料,如擷取第一個僱員的firstName資訊:
◦ company.employees[0].fristName
正如可以用點號和括弧訪問資料,也可以按照同樣的方式輕鬆地修改資料:
◦ company.employees[0].fristName=“Vincent”
伺服器端返回JSON相應的文本表示,如:
◦ {“city” : “Hefei”, “province” : “Anhui”}
用戶端使用eval()函數將JSON文本轉化為JavaScript對象:
Var response =eval(”(”+request.responseText+”)”);
注意,使用額外的圓括弧可使eval()函數將來源輸入無條件地視為運算式進行解析。
然後從JavaScript對象中取得相應的值:
Document.getElementById(“city”).value=response.city;
Document.getElementById(“province”).value=response. province;
通過ajax訪問遠程頁面,該頁面傳回值
if (isok)
Response.Write( "{result:'success'}");
else
Response.Write( "{result:'failed'}");
==========調用返回的值----------------------------
var fnCallBack = function(oResult) {
var oDiv = document.getElementById("divLoading");
if (oDiv) {
oDiv.innerHTML = "";}
var res = eval("("+oResult+")");
if (res.result == "success")
alert("ok");
else
alert("帳號或密碼錯誤,請重試!");
}