{ "employees": [ { "firstname":"bill" , "lastname":"gates" }, { "firstname":"george" , "lastname":"bush" }, { "firstname":"thomas" , "lastname":"carter" } ] }
这个 employee 对象是包含 3 个员工记录(对象)的数组。
*json 使用 javascript 语法来描述数据对象,但是 json 仍然独立于语言和平台。json 解析器和 json 库支持许多不同的语言。
json 文本格式在语法上与创建 javascript 对象的代码相同。
由于这种相似性,无需解析器,javascript 程序能够使用内建的eval() 函数,用 json 数据来生成原生的 javascript 对象。
对于 ajax 应用程序来说,json 比 xml 更快更易使用:
使用 xml
读取 xml 文档 使用 xml dom 来循环遍历文档 读取值并存储在变量中使用 json
读取 json 字符串 用 eval() 处理 json 字符串json 语法是 javascript 语法的子集。
json 语法是 javascript 对象表示法语法的子集。
数据在名称/值对中 数据由逗号分隔 花括号保存对象 方括号保存数组json 数据的书写格式是:名称/值对。
名称/值对包括字段名称(在双引号中),后面写一个冒号,然后是值:
"firstname" : "john"
这很容易理解,等价于这条 javascript 语句:
firstname = "john"
json 值可以是:
数字(整数或浮点数) 字符串(在双引号中) 逻辑值(true 或 false) 数组(在方括号中) 对象(在花括号中) nulljson 对象在花括号中书写:
对象可以包含多个名称/值对:
{ "firstname":"john" , "lastname":"doe" }
这一点也容易理解,与这条 javascript 语句等价:
firstname = "john" lastname = "doe"
json 数组在方括号中书写:
数组可包含多个对象:
{ "employees": [ { "firstname":"john" , "lastname":"doe" }, { "firstname":"anna" , "lastname":"smith" }, { "firstname":"peter" , "lastname":"jones" } ] }
在上面的例子中,对象 "employees" 是包含三个对象的数组。每个对象代表一条关于某人(有姓和名)的记录。
因为 json 使用 javascript 语法,所以无需额外的软件就能处理 javascript 中的 json。
通过 javascript,您可以创建一个对象数组,并像这样进行赋值:
var employees = [ { "firstname":"bill" , "lastname":"gates" }, { "firstname":"george" , "lastname":"bush" }, { "firstname":"thomas" , "lastname": "carter" } ];
可以像这样访问 javascript 对象数组中的第一项:
employees[0].lastname;
返回的内容是:
gates
可以像这样修改数据:
employees[0].lastname = "jobs";
在下面的章节,您将学到如何把 json 文本转换为 javascript 对象。
json 最常见的用法之一,是从 web 服务器上读取 json 数据(作为文件或作为 httprequest),将 json 数据转换为 javascript 对象,然后在网页中使用该数据。
为了更简单地为您讲解,我们使用字符串作为输入进行演示(而不是文件)。
创建包含 json 语法的 javascript 字符串:
var txt = '{ "employees" : [' + '{ "firstname":"bill" , "lastname":"gates" },' + '{ "firstname":"george" , "lastname":"bush" },' + '{ "firstname":"thomas" , "lastname":"carter" } ]}';
由于 json 语法是 javascript 语法的子集,javascript 函数 eval() 可用于将 json 文本转换为 javascript 对象。
eval() 函数使用的是 javascript 编译器,可解析 json 文本,然后生成 javascript 对象。必须把文本包围在括号中,这样才能避免语法错误:
var obj = eval ("(" + txt + ")");
在网页中使用 javascript 对象:
first name:
last name:
提示:eval() 函数可编译并执行任何 javascript 代码。这隐藏了一个潜在的安全问题。
使用 json 解析器将 json 转换为 javascript 对象是更安全的做法。json 解析器只能识别 json 文本,而不会编译脚本。
在中,这提供了原生的 json 支持,而且 json 解析器的速度更快。
较新的浏览器和最新的 ecmascript (javascript) 标准中均包含了原生的对 json 的支持。
web 浏览器支持 | web 软件支持 |
---|---|
firefox (mozilla) 3.5 internet explorer 8 chrome opera 10 safari 4 | jquery yahoo ui prototype dojo ecmascript 1.5 |
对于较老的浏览器,可使用 javascript 库:https://github.com/douglascrockford/json-js
json 格式最初是由 douglas crockford 制定的。
如对本文有疑问, 点击进行留言回复!!
Parallels Desktop 16值得升级吗 Parallels Desktop 16更新内容汇总
网友评论