JSON 语法:规则和示例

虽然 JSON 设计得很简单,但它有必须严格遵循的语法规则。一个错位的逗号或错误的引号字符可能会使整个 JSON 无效。本指南涵盖了您需要了解的所有语法规则,以便编写有效的 JSON 并在发生错误时快速识别它们。

基本规则

JSON 语法基于 JavaScript 的一个子集,但规则更严格,以确保跨平台兼容性。理解这些规则对于有效使用 JSON 至关重要。 最重要的规则:JSON 文档必须对字符串使用双引号,绝不能使用单引号。虽然 JavaScript 允许 'hello' 和 "hello",但 JSON 只接受 "hello"。同样,JSON 对象中的所有键都必须是用双引号括起来的字符串。JavaScript 对象 {name: "张三"} 是有效的 JavaScript 但无效的 JSON;它必须写成 {"name": "张三"}。 JSON 中的空格是灵活的。可以在标记之间自由添加空格、制表符和换行符以提高可读性,而不会影响数据。JSON 没有注释的概念。严格禁止尾随逗号。 JSON 区分大小写。布尔值必须是小写的 true 和 false,而不是 True 和 False。同样,null 必须是小写的。编码必须是 UTF-8(首选)、UTF-16 或 UTF-32。

对象

对象是最常用的 JSON 结构。它们表示无序的键值对集合,类似于 Python 中的字典或 Java 中的哈希映射。 对象用大括号 {} 括起来,包含零个或多个键值对。每个键值对由一个键(必须是双引号中的字符串)、一个冒号和一个值组成。多个对可用逗号分隔。 对象可以嵌套到任何深度。与 JavaScript 对象不同,JSON 对象没有方法或函数——它们只包含数据。根据规范,键顺序在技术上是未定义的,尽管许多实现保留插入顺序。 从技术上讲,允许重复键,但强烈不建议这样做。避免它们以确保跨平台的一致行为。

数组

JSON 中的数组表示有序的值列表。与作为命名属性集合的对象不同,数组是位置很重要的序列。 数组用方括号 [] 括起来,包含零个或多个用逗号分隔的值。JSON 数组不要求所有元素都是相同类型,尽管实际上您通常希望类型一致。 嵌套数组是有效的,对于表示多维数据很有用。保留数组顺序——当您序列化数组并将其解析回来时,元素将按相同的顺序排列。

常见语法错误

即使是经验丰富的开发者也会犯 JSON 语法错误。单引号错误在来自 JavaScript 的开发者中极为常见。编辑 JSON 时,尾随逗号会导致无数的解析错误。 未加引号的键在 JavaScript 中有效,但在 JSON 中无效。JSON 没有注释语法。使用 undefined 或 NaN 值会失败,因为它们在 JSON 中不存在。在复杂的 JSON 中很容易创建不匹配的括号。 当字符串中的特殊字符未正确转义时,会发生转义序列错误。不正确的数字格式(如前导零或十六进制表示法)会导致细微的错误。

试用工具

JSON格式化工具

JSON格式化工具

相关文章