JSON(JavaScript Object Notation)JavaScript对象表示法 是一种轻量级的数据交换格式,它是基于ECMAScript的一个子集。
json简单说就是通过对象和数组两种结构来表示各种复杂的结构。
举个栗子(w3school上的):
var people = {
"employees":[
{"firstName":"Bill", "lastName":"Gates"},
{"firstName":"George", "lastName":"Bush"},
{"firstName":"Thomas", "lastName":"Carter"}
]
}
对象employees对应一个数组,数组中存储了三组值。
访问数据:people.employees[0].firstName , 这个值就是Bill。
JSON语法规则:
JSON语法是JavaScript对象表示法语法的子集。
(1)数据在名称/值对中
(2)数据由逗号分隔
(3)花括号保存对象
(4)方括号保存数组
JSON数据的书写格式是:名称/值对。比如:
"firstName" : "John" 等价于JavaScript:firstName = "John"
JSON的值可以是:
(1)数字(整数或浮点数)
(2)字符串(在双引号中)
(3)逻辑值(true或false)
(4)数组(在方括号中)
(5)对象(在花括号中)
(6)null
JSON对象:
JSON对象在花括号中书写,对象可以包含多个名称/值对:
{"firstName" : "John", "lastName" : "Doe"}
JSON数组:
JSON数组在方括号中书写,数组可以包含多个对象。
JSON的使用:
JSON最常见的用法之一,是从web服务器上读取JSON数据(作为文件或作为HttpRequest),将JSON数据转换为JavaScript对象,然后在网页中使用该数据。
var txt = '{ "employees" : [' + '{ "firstName":"Bill" , "lastName":"Gates" },' + '{ "firstName":"George" , "lastName":"Bush" },' + '{ "firstName":"Thomas" , "lastName":"Carter" } ]}';
var obj = eval ("(" + txt + ")");
<p> First Name: <span id="fname"></span><br /> Last Name: <span id="lname"></span><br /> </p> <script type="text/javascript"> document.getElementById("fname").innerHTML = obj.employees[1].firstName document.getElementById("lname").innerHTML = obj.employees[1].lastName </script>
由于JSON语法是JavaScript语法的子集,JavaScript函数eval()可用于将JSON文本转换为JavaScript对象。eval()函数使用的是JavaScript的编译器,可解析JSON文本(必须把文本包围在括号中)。
但是,eval()函数可编译并执行任何JavaScript代码,这隐藏了一个潜在的安全问题。
使用JSON解析器将JSON转换为JavaScript对象是更安全的做法,JSON解析器只能识别JSON文本,不会编译脚本。在较新的浏览器中提供了原生的JSON支持,而且JSON解析器的速度更快。
jQuery.parseJSON()
函数用于将格式完好的JSON字符串转为与之对应的JavaScript对象。
所谓"格式完好",就是要求指定的字符串必须符合严格的JSON格式,例如:属性名称必须加双引号、字符串值也必须用双引号。
如果传入一个格式不"完好"的JSON字符串将抛出一个JS异常。
$.parseJSON(json) 或 如果浏览器提供了一个本地的JSON.parse()
方法,则jQuery将使用它来解析JSON字符串。