Sign in Join
Wiki copytemporary

JSON/zh CN: what changed

Revision 0 to 1. Removed lines have a minus sign; added lines have a plus sign.

Title: JSON/zh CN

OldNewLine
1+## 概述
2+
3+[JSON](http://www.json.org/json-zh.html) (JavaScript Object Notation) 是种数据表现形式,它提供了简单的文本标准化数据交换格式。正如其名称所暗示的,它是基于JavaScript编程语言的一个子集,但它与语言无关,除了易于阅读和编写,更易于机器解析和生成。
4+
5+相对于[[XML/zh CN|XML]],它易于阅读。
6+
7+## JSON 对象
8+
9+一个JSON对象,无非是括在大括号内的用逗号分隔的键值(名称/值)对。
10+
11+``` javascript
12+{"name1":value1, "name2":value2 ...}
13+```
14+
15+为了便于人们阅读和可视化,键值(名称/值)对经常垂直列出:
16+
17+``` javascript
18+{
19+ "name1": value1,
20+ "name2": value2
21+}
22+```
23+
24+键名(名称)应该使用双引号括起来,而值可以是下列任意一种形式:
25+
26+- 简单的字符串、数字、布尔值或空值(字符用双引号括起来):\
27+ `{"id":1, "name":"John Doe", "married":false}`
28+
29+- 数组;括在方括号中,仍以逗号分隔的集合:\
30+ `{"primeNumbers":[2, 3, 5, 7, 11, 13, 17], "oddNumbers":[1,3,5,7]}`
31+
32+- 对象,名称的集合,包含在大括号中:\
33+ `{"address":{"street":"145 Koinange Street", "City":"Nairobi", "Country":"Kenya"}}`
34+
35+JSON对象可以任意嵌套,以创建更复杂的对象:
36+
37+``` javascript
38+{"user":
39+ { "userid": 1900,
40+ "username": "jsmith",
41+ "password": "secret",
42+ "groups": [ "admins", "users", "maintainers"]
43+ }
44+}
45+```
46+
47+## 有效的JSON格式
48+
49+已定义的JSON语法(参看RFC 4627)中的介绍:
50+
51+- JSON对象封装在大括号内`{ }`。空对象可以表示为`{ }`
52+- 数组封装在方括号内`[ ]`。空数组可以表示为 `[ ]`
53+- 成员由一个键-值对代表
54+- 成员中的键名应该使用双引号括起来
55+- 每个成员都应该有一个对象结构中唯一的键
56+- 值如果是字符串,则表示括在双引号中
57+- 布尔值使用小写**true**或**false**表示
58+- 数字使用双精度浮点格式表示;支持科学记数法形式;数字前不应该有零
59+- "攻击(冲突)"(像单、双引号、大、中括号等)性质的字符必须使用反斜杠进行转义
60+- 空值由小写**null**表示
61+- 其它类型,如日期,(JSON)本身不支持,应该由解析器/客户端处理转换为字符串
62+- 对象或数组每个成员后面必须跟一个逗号,如果它不是最后一个的话
63+- 常见的JSON文件扩展名是**.json**
64+- JSON文件的MIME类型为**application/json**
65+
66+## 实现
67+
68+JSON实现不是很严格,更多的要求客户端应用程序/解析器来执行JSON标准。像往常一样编写代码:
69+
70+- be liberal in what you accept (~~自由接受~~)
71+- be strict (adhering to the standard) in what you send (~~发送时坚持标准~~)
72+
73+JSON有两个主要实现方式:
74+
75+### 官方JSON语法规范
76+
77+此实现将严格遵守RFC4627以上规范,并且不允许出现偏差。
78+
79+### JavaScript语法
80+
81+This implementation follows the implementation of the Javascript programming language and as such allows for a few deviations from the official specification. For example:
82+
83+(~~这个实现是Javascript编程语言的实现,因此允许与官方规范有偏差。例如:~~)
84+
85+1. 允许未引用键名,如`{name: "John Doe" }`
86+2. 允许单、双引号引用键名,如 `{'name': "John Doe", "language":'Pascal'}`
87+3. 允许最后一个成员后,跟随数组或对象,如 `{"keywords":["if","begin","for",], "IDEs":["Lazarus","fpIDE","MSEide"],}`
88+
89+## 参看
90+
91+- [[fcl-json]] FreePascal 和 Lazarus 包实现JSON
92+- [JSON官方网站](http://www.json.org)
93+- [[Streaming JSON/de]] (未翻译的德语教程)
94+
95+---
96+*From the Free Pascal wiki, page "JSON/zh CN", as it stood on 2015-07-17 after a change by FTurtle, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).*
97+Category: JSON/zh CN
98+Category: zh

Back to history