【无标题】
JSON 文本格式的详细语法要求
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。以下是 JSON 的详细语法要求,覆盖每个组成部分和格式规范:
1. 基本规则
- JSON 文本必须是 UTF-8 编码。
- JSON 文本的顶层元素可以是 对象 或 数组。
- JSON 的键和值必须用以下几种基本类型表示:
- 对象(
{}
):键值对的无序集合。 - 数组(
[]
):值的有序集合。 - 字符串:用双引号包裹的文本。
- 数字:支持整数、小数、科学计数法。
- 布尔值:
true
或false
。 - null:表示空值。
- 对象(
2. JSON 对象
对象语法
- JSON 对象由
{}
包裹。 - 对象中包含键值对,格式为:
"key": value
。 - 键必须是双引号包裹的 字符串。
- 键值对之间用逗号分隔。
- 键必须唯一,同一对象中不能有重复键。
示例
{
"name": "Alice",
"age": 25,
"isStudent": false,
"hobbies": ["reading", "traveling"]
}
3. JSON 数组
数组语法
- JSON 数组由
[]
包裹。 - 数组中的值用逗号分隔。
- 数组可以包含任何类型的值,包括对象、数组、字符串、数字、布尔值和 null。
示例
[
"apple",
"banana",
"cherry"
]
嵌套数组
数组可以包含数组,支持任意层级嵌套:
[
[1, 2, 3],
["a", "b", "c"],
[true, false, null]
]
4. JSON 键
键语法
- 必须是双引号包裹的 字符串。
- 键名中不能包含以下字符:
- 反斜杠(
\
) - 双引号(
"
),除非使用转义。 - 控制字符(如回车
\r
、换行\n
)。
- 反斜杠(
示例
{
"valid_key": "value",
"another_key": 123
}
非法键示例
{
unquotedKey: "value" // 错误,键必须加双引号
}
5. JSON 值
JSON 的值可以是以下几种类型:
(1) 字符串
- 必须用双引号
"
包裹。 - 字符串支持转义字符,包括:
\"
:双引号\\
:反斜杠\/
:正斜杠\b
:退格符\f
:换页符\n
:换行符\r
:回车符\t
:制表符- Unicode 转义:
\uXXXX
(四位十六进制表示)
字符串示例
{
"message": "Hello, World!",
"escaped": "Line1\\nLine2",
"unicode": "Smiley: \\u263A"
}
(2) 数字
- 支持整数和浮点数。
- 负数以
-
开头。 - 小数点后必须有至少一位数字(例如不能写作
1.
,需写成1.0
)。 - 支持科学计数法(例如
1e10
)。
数字示例
{
"integer": 42,
"negative": -42,
"float": 3.14159,
"scientific": 6.022e23
}
(3) 布尔值
- 只能是
true
或false
(不区分大小写)。
布尔值示例
{
"isActive": true,
"isDeleted": false
}
(4) Null
- 用
null
表示空值。
Null 示例
{
"optionalField": null
}
6. 空格和格式化
- JSON 中的空格、换行符和缩进不会影响解析,可用于提高可读性。
- 通常缩进使用 2 或 4 个空格。
示例
紧凑格式:
{"name":"Alice","age":25}
可读性优化:
{
"name": "Alice",
"age": 25
}
7. 注意事项
(1) 最外层必须是对象或数组
以下是合法的 JSON:
{
"key": "value"
}
["value1", "value2"]
以下是非法的 JSON:
"key": "value" // 错误,最外层必须是对象或数组
(2) 逗号问题
- 对象或数组的最后一个元素后不能有逗号:
{
"key1": "value1",
"key2": "value2"
}
错误示例:
{
"key1": "value1",
"key2": "value2",
}
(3) 重复键
- JSON 对象中的键名必须唯一:
{
"key": "value1",
"key": "value2" // 错误,键名重复
}
8. JSON 文件的 MIME 类型
- MIME 类型为:
application/json
。 - 文件扩展名为:
.json
。
9. 常见错误和解决方法
(1) 键未加双引号
{key: "value"} // 错误
正确:
{"key": "value"}
(2) 使用单引号
{'key': 'value'} // 错误
正确:
{"key": "value"}
(3) 值后多余逗号
{
"key": "value",
} // 错误
正确:
{
"key": "value"
}
原文地址:https://blog.csdn.net/m0_53605808/article/details/145168748
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!