JSON/zh CN
From Free Pascal wiki
Jump to navigationJump to search
│
English (en) │
suomi (fi) │
日本語 (ja) │
한국어 (ko) │
polski (pl) │
русский (ru) │
中文(中国大陆) (zh_CN) │
概述
JSON (JavaScript Object Notation) 是种数据表现形式,它提供了简单的文本标准化数据交换格式。正如其名称所暗示的,它是基于JavaScript编程语言的一个子集,但它与语言无关,除了易于阅读和编写,更易于机器解析和生成。
相对于XML,它易于阅读。
JSON 对象
一个JSON对象,无非是括在大括号内的用逗号分隔的键值(名称/值)对。
{"name1":value1, "name2":value2 ...}
为了便于人们阅读和可视化,键值(名称/值)对经常垂直列出:
{
"name1": value1,
"name2": value2
}
键名(名称)应该使用双引号括起来,而值可以是下列任意一种形式:
- 简单的字符串、数字、布尔值或空值(字符用双引号括起来):
{"id":1, "name":"John Doe", "married":false}
- 数组;括在方括号中,仍以逗号分隔的集合:
{"primeNumbers":[2, 3, 5, 7, 11, 13, 17], "oddNumbers":[1,3,5,7]}
- 对象,名称的集合,包含在大括号中:
{"address":{"street":"145 Koinange Street", "City":"Nairobi", "Country":"Kenya"}}
JSON对象可以任意嵌套,以创建更复杂的对象:
{"user":
{ "userid": 1900,
"username": "jsmith",
"password": "secret",
"groups": [ "admins", "users", "maintainers"]
}
}
有效的JSON格式
已定义的JSON语法(参看RFC 4627)中的介绍:
- JSON对象封装在大括号内
{ }
。空对象可以表示为{ }
- 数组封装在方括号内
[ ]
。空数组可以表示为[ ]
- 成员由一个键-值对代表
- 成员中的键名应该使用双引号括起来
- 每个成员都应该有一个对象结构中唯一的键
- 值如果是字符串,则表示括在双引号中
- 布尔值使用小写true或false表示
- 数字使用双精度浮点格式表示;支持科学记数法形式;数字前不应该有零
- "攻击(冲突)"(像单、双引号、大、中括号等)性质的字符必须使用反斜杠进行转义
- 空值由小写null表示
- 其它类型,如日期,(JSON)本身不支持,应该由解析器/客户端处理转换为字符串
- 对象或数组每个成员后面必须跟一个逗号,如果它不是最后一个的话
- 常见的JSON文件扩展名是.json
- JSON文件的MIME类型为application/json
实现
JSON实现不是很严格,更多的要求客户端应用程序/解析器来执行JSON标准。像往常一样编写代码:
- be liberal in what you accept (
自由接受) - be strict (adhering to the standard) in what you send (
发送时坚持标准)
JSON有两个主要实现方式:
官方JSON语法规范
此实现将严格遵守RFC4627以上规范,并且不允许出现偏差。
JavaScript语法
This implementation follows the implementation of the Javascript programming language and as such allows for a few deviations from the official specification. For example:
(这个实现是Javascript编程语言的实现,因此允许与官方规范有偏差。例如:)
- 允许未引用键名,如
{name: "John Doe" }
- 允许单、双引号引用键名,如
{'name': "John Doe", "language":'Pascal'}
- 允许最后一个成员后,跟随数组或对象,如
{"keywords":["if","begin","for",], "IDEs":["Lazarus","fpIDE","MSEide"],}
参看
- fcl-json FreePascal 和 Lazarus 包实现JSON
- JSON官方网站
- Streaming JSON/de (未翻译的德语教程)