- 内容简介
- 译者序
- 前言
- 第 1 章 安装配置新项目
- 第 2 章 Flexbox 布局介绍
- 第 3 章 用 React Native 开发一个应用
- 第 4 章 在 React Native 中使用导航
- 第 5 章 动画和滑动菜单
- 第 6 章 用 React Native 绘制 Canvas
- 第 7 章 使用 React Native 播放音频
- 第 8 章 你的第一个自定义视图
- 第 9 章 Flux 介绍
- 第 10 章 处理复杂的应用程序状态
- 第 11 章 使用 Node 来实现服务端 API
- 第 12 章 在 React Native 中使用文件上传
- 第 13 章 理解 JavaScript Promise
- 第 14 章 fetch 简介
- 第 15 章 在 iOS 中使用 SQLite
- 第 16 章 集成 Google Admob
- 第 17 章 React Native 组件国际化
- 附录 A React.js 快速介绍
- 附录 B Objective-C Primer
- 附录 C webpack 入门
使用 JSON
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,由 Douglas Crockford(道格拉斯·克罗克福特)设计,并在 RFC 4627 规范中描述,是 JavaScript 对象表示语法的子集。使用 JSON 比较广泛的例子就是 Web 服务的响应数据。在比较久远的时代,Web 服务使用 XML 作为其主要的数据传输格式。自从 JSON 出现后,它就因轻量的特点而被广泛应用。
JSON 建立在以下两种结构之上:
- 键值对的集合。在大多数语言中,将这种结构实现为对象、record、结构体、字典、哈希表、键列表或关联数组。
- 值的有序列表。在大多数语言中,这种结构被实现为数组、容器、列表或序列。
JSON 结构
object

array

value

string

number

下面是一个 JSON 数据的例子:
{
"firstName": "John",
"lastName": "Smith",
"address": {
"streetAddress": "21 2nd Street",
"city": "New York",
"state": "NY",
"postalCode": 10021
},
"phoneNumbers": [
"212 555-1234",
"646 555-4567"
]
}
在 JavaScript 中使用 JSON
在 JavaScript 中处理 JSON 时,您可能会使用 eval 函数来解析 JSON 字符串的结果,但由于安全原因并不建议直接这么做(恶意数据可以从服务器发送到客户端,然后 eval 直接执行客户端的脚本而产生有害的影响)。因此,在使用 eval 解析 JSON 之前,可以使用 Crockford 的脚本来检测 JSON 的有效性。
以下两个链接提供了 JSON 转换的文档和响应 js 的代码实现。
- http://www.json.org/js.html
- https://github.com/douglascrockford/JSON-js/blob/master/json2.js
下面介绍一个使用 JSON 解析器的例子(使用上文的 JSON 数据):
// 回调函数会在服务器接收到数据时执行
var callback = function (result) {
var johnny = JSON.parse(result);
// 在这里,
johnny 变量是一个包含了上面
JSON 示例代码所有属性的对象
alert(johnny.firstName + ' ' + johnny.lastName); // Will alert '
John Smith'
}
JSON 解析器还提供了另一个非常有用的方法——stringify。这个方法接收一个 JavaScript 对象作为参数,返回一个 JSON 格式的字符串。这个方法在向服务器发送数据时还是很有用的:
var anObject = {name: "Andreas", surname : "Grech", age : 20};
var jsonFormat = JSON.stringify(anObject); // 这个方法就会输出这样的字符串: // "name":"Andreas", "surname":"Grech", "age":20
上面提到的两个方法(parse 和 stringify)也接收一个函数作为第二参数。这个函数递归处理 JSON 对象的每个键值对,并将处理的结果返回。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论