JSON:JavaScript 对象表示法(JavaScript Object Notation)。
JSON 是存储和交换文本信息的语法。类似 XML。
JSON 比 XML 更小、更快,更易解析
JSON - 转换为 JavaScript 对象
无需解析器,JavaScript 程序能够使用内建的 eval() 函数(用 JSON 数据来生成原生的 JavaScript 对象)
实例
<script type="text/javascript">
var JSONObject= {
"name":"Bill Gates",
"street":"Fifth Avenue New York 666",
"age":56,
"phone":"555 1234567"};
document.getElementById("jname").innerHTML=JSONObject.name
document.getElementById("jage").innerHTML=JSONObject.age
document.getElementById("jstreet").innerHTML=JSONObject.street
document.getElementById("jphone").innerHTML=JSONObject.phone
</script>
使用 JSON
- 读取 JSON 字符串
- 用 eval() 处理 JSON 字符串
JSON 语法规则
JSON 语法是 JavaScript 对象表示法语法的子集。
- 数据在key/value对中
- 数据由逗号分隔
- 花括号保存对象
- 方括号保存数组
JSON 对象
JSON 对象在花括号中书写:
对象可以包含多个名称/值对:
{ "firstName":"John" , "lastName":"Doe" }
这一点也容易理解,与这条 JavaScript 语句等价:
firstName = "John"
lastName = "Doe"
JSON 数组
JSON 数组在方括号中书写(数组可包含多个对象):
{
"employees": [
{ "firstName":"John" , "lastName":"Doe" },
{ "firstName":"Anna" , "lastName":"Smith" },
{ "firstName":"Peter" , "lastName":"Jones" }
]
}
对象 "employees" 是包含三个对象的数组。每个对象代表一条关于某人(有姓和名)的记录
JSON 使用 JavaScript 语法
像这样访问 JavaScript 对象数组中的第一项:
employees[0].lastName;
返回的内容是:
Doe
这样修改数据:
employees[0].lastName = "Jobs";
把 JSON 文本转换为 JavaScript 对象
最常见的用法之一:从 web 服务器上
-->读取 JSON 数据(作为文件或作为 HttpRequest)
--> 将 JSON 数据转换为 JavaScript 对象
--> 然后在网页中使用该数据
JSON 实例 - 来自字符串的对象
包含 JSON 语法的 JavaScript 字符串:
var json_txt = '{ "employees" : [' +
'{ "firstName":"Bill" , "lastName":"Gates" },' +
'{ "firstName":"George" , "lastName":"Bush" },' +
'{ "firstName":"Thomas" , "lastName":"Carter" } ]}';
eval()可解析 JSON 文本,然后生成 JavaScript 对象。必须把文本包围在括号中,这样才能避免语法错误:
var obj = eval ("(" + json_txt + ")");