JSON_ 百度 百科

编辑锁定
JSON (JavaScript Object Notation, JS 对象 简谱) 是 一种 轻量级 的 数据 交换 格式. 它 基于 ECMAScript (欧洲 计算机 协会 制定 的 js 规范) 的 一个 子 集, 采用 完全 独立 于 编程 语言 的 文本 格式 来 存储 和表示 数据. 简洁 和 清晰 的 层次 结构 使得 JSON 成为 理想 的 数据 交换 语言. 易于 人 阅读 和 编写, 同时 也 易于 机器 解析 和 生成, 并 有效 地 提升 网络 传输 效率.
中文名
JavaScript 对象 简谱
外文名
JavaScript-Objekt-Notation
缩    写
JSON
学    科
信息技术
发    音
/ Dʒeɪsən /

目录

JSON (JavaScript Object Notation) 是 一种 轻量级 的 数据 交换 格式 易于 人 阅读 和 编写 同时 也 易于 机器 解析 和 生成 它 基于 JavaScript Programmiersprache, Standard ECMA-262 3rd Edition -... Dezember 1999 的 一个 子 集.

JSON 是 Douglas Crockford 在 2001 年 开始 推广 使用 的 数据 格式, 在 2005 年 - 2006 年 正式 成为 主流 的 数据 格式, 雅虎 和 谷 歌 就 在 那时候 开始 广泛 地 使用 JSON 格式.

JSONJSON 语法 规则

在 JS 语言 中, 一切 都是 对象 因此, 任何 支持 的 类型 都 可以 通过 JSON 来 表示, 例如 字符串, 数字, 对象, 数组 等 但是 对象 和 数组 是 比较 特殊 且 常用 的 两种 类型..:

  • 对象表示为键值对

  • 数据由逗号分隔

  • 花括号保存对象

  • 方括号保存数组

JSONJSON 键 / 值 对

JSON 键值 对 是 用来 保存 JS 对象 的 一种 方式, 和 JS 对象 的 写法 也 大同小异, 键 / 值 对 组合 中 的 键 名 写在前面 并 用 双 引号 "" 包裹, 使用 冒号: 分隔, 然后 紧接着值:

{"Vorname": "Json"}

理解 很 容易 理解, 等价 于 这 条 JavaScript:

{Vorname: "Json"}

JSONJSON 与 JS 对象 的 关系

不清楚 人 搞 不清楚 JSON 和 s s s s, 甚至 连 其实 其实 其实 理解 理解

JSON 是 JS 对象 的 字符串 表示 法, 它 使用 文本 表示 一个 一个, 本质 是 信息 信息.

var obj = {a: 'Hallo', b: 'Welt'}; // 这 是 一个 对象, 注意 键 名 可以 使用 引号 包裹 的
var json = '{"a": "Hallo", "b": "Welt"}; // 这 是 一个 JSON 字符串, 本质 是 一个 字符串

JSONJSON 和 JS 对象 互转

为 实现 从 对象 转换 为 JSON 字符串, 使用 JSON.stringify () 方法:

var json = JSON.stringify ({a: 'Hallo', b: 'Welt'}); // 结果 是 '{"a": "Hallo", "b": "Welt"}'

从 实现 从 JSON 转换 为 对象, 使用 JSON.parse () 方法:

var obj = JSON.parse ('{"a": "Hallo", "b": "Welt"}); // 结果 是 {a: 'Hallo', b: 'Welt'}

在 JS 语言 中, 一切 都是 对象. 因此, 任何 支持 的 类型 都 可以 通过 JSON 来 表示, 例如 字符串, 数字, 对象, 数组 等. 但是 对象 和 数组 是 比较 特殊 且 常用 的 两种 类型.

对象: 对象 在 JS 中 是 使用 花 括号 包裹 {} 起来 的 内容, 数据 结构 为 {key1: value1, key2: Wert2, ...} 的 键值 对 结构 在 面向 对象 的 语言 中, Schlüssel 为 对象 的. Value, Wert 为 对应 的 值. Value 名 可以 类型 类型 和 字符串 类型 类型.

在: 在 数组 在 在 在 在 内容 为 为 为 为 为 "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "在 在 在 在 在 在 在 在 在 在 在 在 在 在的 数据 类型, 它 也 可以 像 对象 但 但 对 对 但 但 但 但 但 但 但 类型 类型 类型 类型 类型 类型 类型 类型 类型 类型 类型 类型 类型 类型 类型 类型 类型 类型 类型 同样 同样 同样 同样 同样.

简单地说 [1] , JSON 可以 将 JavaScript 对象 中 表示 的 一 组 数据 转换 为 字符串, 然后 就 可以 在 网络 或者 程序 之间 轻松 地 传递 这个 字符串, 并 在 需要 的 时候 将 它 还原 为 各 编程 语言 所 支持 的 数据 格式, 例如 在 PHP 中, 可以 将 JSON 还原 为 数组 或者 一个 基本 对象. 在 用到 AJAX 时, 如果 需要 用到 数组 传 值, 这时 就 需要 用 JSON 将 数组 转化 为 字符串.

JSON 表示 对象

JSON 最 常用 的 格式 是 对象 键值 键值 例如 例如 例如

{"Vorname": "Brett", "Nachname": "McLaughlin"}

JSON 表示 数组

JS 普通 的 JS JS JS, JSON 表示 数组 方式 也是 也是 使用 括号].

{ "Menschen":[ {"Vorname": "Brett", "Nachname": "McLaughlin" }, { "Vorname": "Jason","Nachname": "Jäger"}]}

这 不难 理解. 在 这个 示例 中, 只有 一个 名为 Menschen 的 变量, 值 是 包含 两个 条目 的 数组, 每个 条目 是 一个 人 的 记录, 其中 包含 名 和 姓. 上面 的 示例 演示 如何 用 括号 将 记录组合 成 一个 值. 当然, 可以 使用 相同 语法 语法 表示 更 过多 的 值 (每个 值 包含 多个 记录).

在 处理 JSON 格式 的 数据 时, 没有 需要 遵守 的 预定 义 的 约束. 所以, 在 同样 的 数据 结构 中, 可以 改变 表示 数据 的 方式, 也 可以 使用 不同 方式 表示 同一 事物.

如前面所说,除了对象和数组,你也可以简单地使用字符串或者数字等来存储简单的数据,但这样并没有多大意义。

JSON 可读性

JSON 和 XML 的 可读性 可谓 不相上下, 一边 是 简易 的 语法, 一边 是 规范 的 标签 形式, 很难 分出 胜负.

JSON 可 扩展 性

XML, JSON, JSON, JSON, JSON, JSON, JSON, Javascript, Javascript, Xml, Xml.

JSON 编码 难度

XML 有 丰富 的 编码 工具, 比如 DOM4J, JDom 等, JSON 也 有 提供 的 工具. 无 工具 的 情况 下, 相信 熟练 的 开发 人员 一样 能 很快 的 写出 想要 的 xml 文档 和 JSON 字符串, 不过, xml字符 要 多 很多 结构 上 字符.

JSON 解码 难度

XML 的 解析 方式 有 两种:

一是 通过 文档 模型 解析, 也 就是 通过 父 标签 索引 出 一 组 标记 例如. XmlData.getElementsByTagName ( "tagName"), 但是 这样 是 要 在 预先 知道 文档 结构 的 情况 下 使用, 无法 进行 通用 的 封装.

Document 一种 方法 是 遍历 节点 (Dokument 以及 childNodes). Document 可以 通过 递归 来 实现 实现 document 各异 仍旧 仍旧 是 各异 各异 往往 以及 以及 以及 是 各异 各异 document 以及 以及 以及 各异 各异 各异.

凡是这样可扩展的结构数据解析起来一定都很困难。

JSON 也 同样 如此. 如果 预先 知道 JSON 结构 的 情况 下, 使用 JSON 进行 数据 传递 简直 是 太美妙 了, 可以 写出 很 实用 美观 可读性 强 的 代码. 如果 你 是 纯粹 的 前台 开发 人员, 一定 会 非常喜欢 JSON. 喜欢 喜欢 如果 是 人员 人员 人员 人员 人员 人员 人员 毕竟 ml 语言 语言 语言 语言 语言 语言 语言 语言 语言 语言 语言 语言 语言 语言 语言 语言 语言 语言 语言 语言 语言 语言 语言 语言 语言 语言 语言.

而 如果 不 知道 JSON 的 结构 而去 解析 JSON 的 话, 那 简直 是 噩梦. 费时 费力 不 说, 代码 也会 变得 冗余 拖沓, 得到 的 结果 也 不尽人意. 但是 这样 也不 影响 众多 前台 开发 人员 选择JSON. 因为 json.js 中 的 toJSONString () 就 可以 看到 JSON 的 字符串 结构. 当然 不是 使用 这个 字符串, 这样 仍旧 是 噩梦. 常用 JSON 的 人 看到 这个 字符串 之后, 就 对 JSON 的 结构 很操作 了, 就更 容易 操作 操作 JSON.

以上 是 在 Javascript 中 仅 对于 数据 传递 的 xml 与 JSON 的 解析. 在 Javascript 地盘 内, JSON 毕竟 是 主场 作战, 其 优势 当然 要 远远 优越 于 xml. 如果 JSON 中 存储 Javascript 复合 对象, 而且 不 知道 其 结构解析 话 我 相信 很多 很多 也 一样 哭着 解析 解析 解析 解析 解析.

除了 上述 之外, JSON 和 XML 还有 另外 一个 很大 的 区别 在于 有效 数据 率 JSON 作为 数据 包 格式 传输 的 时候 具有 更高 的 效率, 这 是 因为 JSON 不像 XML 那样 需要 有 严格 的 闭合 标签,提升 让 有效 有效 量 量 提升 提升 提升 提升 提升 提升, [2] 。

JSON 实例 比较

用 XML 表示 中国 部分 省市 数据:

<?xml version="1.0" encoding="utf-8"?><country>    <name>中国</name>    <province>        <name>黑龙江</name>        <cities>            <city>哈尔滨</city>            <city>大庆</city>        </cities>    </province>    <province>        <name>广东</name>        <cities>            <city>广州</city>            <city>深圳</city>            <city>珠海</city>        </cities>    </province>    <province>        <name>台湾</name>        <cities>            <city>台北</city>            <city>高雄</city>        </cities>    </province>    <province>        <name>新疆</name>        <cities>            <city>乌鲁木齐</city>        </cities>    </province></country>

用 JSON 表示 如下:

{ "Name": "中国", "Provinz": [{ "Name": "黑龙江", "Städte": { "Stadt": ["哈尔滨", "大庆"] } }, { "Name": "广东", "Städte": { "Stadt": ["广州", "深圳", "珠海"] } }, { "Name": "台湾", "Städte": { "Stadt": ["台北", "高雄"] } }, { "Name": "新疆", "Städte": { "Stadt": ["乌鲁木齐"] } }]}

可以 看到, JSON 简单 的 语法 格式 和 清晰 的 层次 结构 明显 要比 XML 容易 阅读, 并且 在 数据 交换 方面, 由于 JSON 所 使用 的 字符 要比 XML 少 得多, 可以 大大 得 节约 传输 数据 所 占用 的 带宽.

JSON 前言

JSON 格式 取代 了 xml 给 网络 传输 带来 了 很大 的 便利, 但是 却 没有 了 xml 的 一目了然, 尤其 是 json 数据 很 长 的 时候, 我们 会 陷入 繁琐 复杂 的 数据 节点 查找 中.

工具 国人 的 一款 在线 工具 BeJson, SoJson [3] 接触 工具 让 众多 程序员, 接触 接触 JSON 格式 的 程序员 更快 了解 了解 了解 了解 结构 结构 结构 定位 定位 定位 定位 定位 定位 定位.

JSON 功能

1 JSON 格式化 校验

很多 人 在 得到 JSON 数据 后, 一时 没有 办法 判断 JSON 数据 格式 是否 正确, 是否 少 或多 符号 而 导致 程序 不能 解析, 这个 功能 正好 能 帮助 大家 来 完成 JSON 格式 的 校验.

2 JSON 视图

想必很多程序员都会遇到当找一个节点的时候,会发现如果直接对着一行行数据无从下手,就算知道哪个位置,还要一个节点一个节点的往下找,万一一不留神又得从头开始找的麻烦事。

一切 这个 功能, 一切 JSON 数据 都会 变成 视图 格式, 一目了然, 什么 对象 下 下 有 数组, 一个 数组 下 有 对象.

这个功能非常实用。不光有视图功能还有格式化、压缩、转义、校验功能。总之很强大。

3 压缩转义

程序员 在 写 JSON 语句 测试用例 的 时候, 很多 时候 为了 方便 直接 写 了 个 JSON 字符串 做 测试, 但是 又 陷入 了 无止境 的 双 引号 转义 的 麻烦 中. 这款 功能 集 压缩, 转义 于 一身让 你 在 写 测试用例 时候, 如鱼得水.

4 JSON 在线 编辑 器

如果 你 现在 的 电脑 刚巧 没有 装 你 所 熟悉 的 编辑 器, 如果 你 想 针对 拿到 的 JSON 数据 的 某个 节点 做 数据 修改 时, 这个 功能 可以满足 你 的 需求.

5 在线 发送 JSON 数据

大家 都 知道, JSON 用 的 最多 的 还是 Web 项目 的 开发, 那 你 要 测试 一个 接口 是否 能 准确 的 接受 JSON 数据, 那 你 就得 写 一个 页面 发送 JSON 字符串, 重复 的 做着 这 件事. 随着 这个 功能 的 横空 出世, 你 可以 摆脱 写 测试 页面 了, 因为 这个 功能 可以 将 指定 的 JSON 数据 发送 指定 的 url, 方便 吧.

6 JSON 着色

很多 人 在 写 文档 时, 总 希望 文档 能 一目了然, 但是 面对着 白底 黑字 的 JSON 数据 总是 提 不起 精神 没关系, 使用 这个 功能, 所有 的 关键字 都 [4] 会被着色,数据结构一目了然。

7 JSON-XML 互转

将, 将 JSON 成 数据 转化 XML [4] 或者, 或者 XML 格式 的 转化 成 JSON 格式, 一切 都不 是 问题.

8 JSON-ANSICHT

JSON 在 实用 工具, 在 开发 过程 中 (Windows 平台 中) 可以 对 对 对 对 对 对.

9 它 和 xml 一样 都是 一种 数据 交换 格式

JSONJSON, 最小 最小 化

Eclipse RAP 的 一个 提交 者 也是 领导 者 的 Ralf Sternberg, 他 只 用 了 十个 类 就把 快速 的 和 轻量级 的 库 整合 到 了 一起. 显然, 使用 精益 和 解析 法 真正 地 改善 了 服务器 的 性能, 因为服务器 进程 以 更高 的 效率 为 大量 的 客户 创建 了 JSON 信息. 在 外部 JSON 中 不 存在 依赖 关系, 代码 很 容易 管理, 而且 也 不会 占用 很多 内存. 对于 你 的 全部 JSON 项目 来说, 这 还 远远 不够, 但这 确实 带来 了 几 好事. [5] 
参考资料

词条标签:

科技术语,科学