JSON對象的格式:json
JSON(JavaScript Object Notation)一種簡單的數據格式,比xml更輕巧。XML曾經是程序界風靡一時的語言,但JSON的出現對他也有不小的衝擊。數組
JSON是JavaScript原生格式,這意味着在JavaScript中處理JSON數據不須要任何特殊的API或工具包。 服務器
JSON的規則很簡單:對象是一個無序的「‘名稱/值’對」集合。一個對象以「{」(左括號)開始,「}」(右括號)結束。每一個「名稱」後跟一個「:」(冒號);「‘名稱/值’對」之間使用「,」(逗號)分隔。ide
規則以下:函數
1) JSON的屬性名稱要求以「雙引號」包裹 工具
2) 映射用冒號(「:」)表示。」名稱」:值spa
3) 並列的數據之間用逗號(「,」)分隔。名稱1:值1,名稱2:值2debug
4) 映射的集合(對象)用大括號(「{}」)表示。{名稱1:值1,名稱2:值2}code
5) 並列數據的集合(數組)用方括號(「[]」)表示。xml
[
{名稱1:值,名稱2:值2},
{名稱1:值,名稱2:值2}
]
6) 元素值可具備的類型:string, number, object, array, true, false, null
JSON 用冒號(而不是等號)來賦值。每一條賦值語句用逗號分開。整個對象用大括號封裝起來。可用大括號分級嵌套數據。
var obj = {};
對象描述中存儲的數據能夠是字符串,數字或者布爾值。對象描述也可存儲函數,那就是對象的方法。
JSON 只是一種文本字符串。
能夠JavaScript 的 eval 語句。函數 eval 會把一個字符串看成它的參數。而後這個字符串會被看成 JavaScript 代碼來執行。由於 JSON 的字符串就是由 JavaScript 代碼構成的,因此它自己是可執行的
代碼實例:
<script language="JavaScript"> var jsonObj = {"name":"xiaoq","age":18}; // 查看json對象的原生結構 console.debug(jsonObj); // "({name:"xiaoq", age:18})" </script> |
<script language="JavaScript"> var jsonStr =’{"name":"xiaoq","age":18}’; // 查看json對象的原生結構 console.debug(eval(「(」+jsonStr+」)」)); // </script> |
JS字面量:
{name:」小強」}
JSON:
{「name」:」小強」}
格式的識別,能夠採用字符串轉換方式。
可是,eval的參數是js字符串(並非JSON字符串)。
var obj = eval("(" + jsonText + ")"); |
在ECMAScript3.1標準中,已經提供了一個名爲JSON的全局對象,專門用來解析和反解析JSON字符串。
var obj = JSON.parse("{}"); // 字符串轉JSON JSON.stringify(obj);// 對象轉JSON |
例子1:
<script language="JavaScript"> var people ={"firstName": "Brett", "lastName":"McLaughlin", "email": "brett@newInstance.com" }; alert(people.firstName); alert(people.lastName); alert(people.email); </script> |
<script language="JavaScript"> var people =[ {"firstName": "Brett","email": "brett@newInstance.com" }, {"firstName": "Mary","email": "mary@newInstance.com" } ];
alert(people[0].firstName); alert(people[0].email); alert(people[1].firstName); alert(people[1].email); </script>
|
<script language="JavaScript"> var people ={ "username":"mary", "age":"20", "info":{"tel":"1234566","celltelphone":788666}, "address":[ {"city":"beijing","code":"1000022"}, {"city":"shanghai","code":"2210444"} ] };
window.alert(people.username); window.alert(people.info.tel); window.alert(people.address[0].city); </script>
|
優勢:
做爲一種數據傳輸格式,JSON 與 XML 很類似,可是它更加靈巧。
JSON 不須要從服務器端發送含有特定內容類型的首部信息。
缺點:
語法過於嚴謹
代碼不易讀
eval 函數存在風險
簡述JavaScript字面量和JSON之間的區別??