本节是第四讲的第十七小节,上一节我们为大家介绍了JavaScript原型式继承的相关属性以及方法,本节为大家介绍与服务器交换的常用数据格式JSON。
使用JSON
JavaScript对象表示法(JSON)是用于将结构化数据表示为JavaScript对象的标准格式,通常用于在网站上表示和传输数据(例如从服务器向客户端发送一些数据,因此可以将其显示在网页上)。
JSON(JavaScript Object Notation-JavaScript对象表示法)
JSON 是一种按照JavaScript对象语法的数据格式,这是 Douglas Crockford(JavaScript 权威专家) 推广的。虽然它是基于 JavaScript 语法,但它独立于JavaScript,这也是为什么许多程序环境能够读取(解读)和生成 JSON。
JSON可以作为一个对象或者字符串存在,前者用于解读 JSON 中的数据,后者用于通过网络传输 JSON 数据。这不是一个大事件——JavaScript 提供一个全局的 可访问的 JSON 对象来对这两种数据进行转换。
一个 JSON 对象可以被储存在它自己的文件中,这基本上就是一个文本文件,扩展名为 .json, 还有 MIME type 用于 application/json。
JSON 结构
我们已经可以推测出 JSON 对象就是基于 JavaScript 对象,而且这几乎是正确的。您可以把 JavaScript 对象原原本本的写入 JSON 数据——字符串,数字,数组,布尔还有其它的字面值对象。这允许您构造出一个对象树,如下:
{
"Name" : "Super hero",
"homeTown" : "Metro City",
"formed" : 2016,
"active" : true,
"members" : [
{
"name" : "Molecule Man",
"age" : 29,
"secretIdentity" : "Dan Jukes",
}, {
"name" : "Madame Uppercut",
"age" : 39,
"secretIdentity" : "Jane Wilson",
}]
}
如果我们要加载对象进入 JavaScript 程序,以保存为一个名为 superHeroes 对象为例,我们使用 . 或 [] 访问对象内的数据。如:superHeroes.hometown;superHeroes["active"];为了访问对象中的对象,您只需简单地链式访问(通过属性名和数组索引)。例如,访问 superHeroes 对象中的 members 数组对象的第二个元素的 age属性,可以用superHeroes["members"][1]["age"]。
JSON 数组
我们已经可以推测出 JSON 对象就是基于 JavaScript 对象,而且这几乎是正确的——我们说几乎正确的原因是数组对象也是一种合法的 JSON 对象。
如下所示,这是完全合法的 JSON。您只需要通过数组索引就可以访问数组元素,如[0]["name"]
[{
"name" : "Molecule Man",
"age" : 29,
"secretIdentity" : "Dan Jukes",
},
{
"name" : "Madame Uppercut",
"age" : 39,
"secretIdentity" : "Jane Wilson",
}]
其他注意事项
JSON 是一种纯数据格式,它只包含属性,没有方法。
JSON 要求有两头的 { } 来使其合法。最安全的写法是有两边的括号,而不是一边。
甚至一个错位的逗号或分号就可以导致 JSON 文件出错。您应该小心的检查您想使用的数据(虽然计算机生成的 JSON 很少出错,只要生成程序正常工作)。您可以通过网上的在线检查程序来检验 JSON。
JSON 可以将任何标准合法的 JSON 数据格式化保存,不只是数组和对象。比如,一个单一的字符串或者数字可以是合法的 JSON 对象。虽然不是特别有用处……
不像 JavaScript 标识符可以用作属性,在 JSON 中,只有字符串才能用作属性。
对象和文本间的转换
我们接收到一些字符串作为 JSON 数据,然后我们想要将它转换为对象。当我们想要发送 JSON 数据作为信息,我们将需要转换它为字符串,我们经常需要正确的转换数据,幸运的是,这两个问题在web环境中是那么普遍以至于浏览器拥有一个内建的 JSON,包含以下两个方法。
parse(): 以文本字符串形式接受JSON对象作为参数,并返回相应的对象。。
stringify(): 接收一个对象作为参数,返回一个对应的JSON字符串。
示例如下:
var toString='{ "name" : "Chris", "age" : "38" }';
var toJSON=JSON.parse(toString);
var myJSON = { "name" : "Chris", "age" : "38" };
var myString = JSON.stringify(myJSON);
以上内容部分摘自视频课程04网页游戏编程JavaScript-17JSON对象,更多示例请参见网站示例。跟着张员外讲编程,学习更轻松,不花钱还能学习真本领。
领取专属 10元无门槛券
私享最新 技术干货