JSON格式字符串的书写指南与实例解析
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,因其易读、易解析的特性,成为前后端数据交互、配置文件存储等场景的主流选择,本文将从JSON的基本结构、语法规则、常见场景出发,结合实例详细讲解JSON格式字符串的书写方法,并总结常见错误避免技巧。
JSON的基本结构:两种核心形式
JSON格式字符串本质上是一个文本字符串遵循JSON规范,核心结构分为两种:对象(Object)和数组(Array),其他数据类型(如字符串、数字、布尔值等)则作为这两种结构的“值”存在。
对象(Object):用“键值对”存储数据
对象以开头,以结尾,内部由多个“键值对”(Key-Value Pair)组成,键值对之间用逗号分隔。
- 键(Key):必须是字符串,必须用双引号包裹(不能用单引号)。
- 值(Value):可以是多种数据类型(字符串、数字、布尔值、null、对象或数组)。
基本语法:
{
"键1": 值1,
"键2": 值2,
"键3": {
"嵌套键": "嵌套值"
}
}
数组(Array):用“有序列表”存储数据
数组以[开头,以]内部由多个值组成,值之间用逗号分隔,数组的值可以是任意JSON数据类型(包括对象或其他数组)。
基本语法:
[
值1,
值2,
{
"键": "数组中的对象值"
},
[1, 2, 3]
]
JSON支持的数据类型及书写规则
JSON对数据类型有严格限制,以下是常见类型的书写规范:
字符串(String)
- 必须用双引号包裹(不能用单引号或反引号
`)。 - 支持转义字符,如换行符
\n、引号\"、反斜杠\\等。
示例:
"name": "张三", "address": "北京市朝阳区\"望京\"街道\nA座1001室"
数字(Number)
- 不分整数、浮点数,统一用数字表示(无需区分类型)。
- 不能有前导零(除0本身外),如
01是错误的,应写为1。 - 支持科学计数法(如
5e3表示1500),但不支持NaN、Infinity等特殊值。
示例:
"age": 25, "price": 99.99, "scientific": 6.022e23
布尔值(Boolean)
- 仅支持
true和false(全小写,首字母不能大写)。
示例:
"isStudent": true, "isActive": false
null
- 表示“空值”,仅支持小写的
null(不能是NULL、Null或)。
示例:
"middleName": null
对象与数组(嵌套结构)
对象和数组可以相互嵌套,实现复杂数据结构的表达。
示例(嵌套对象):
{
"user": {
"id": 1001,
"name": "李四",
"contact": {
"email": "lisi@example.com",
"phone": "13800138000"
}
}
}
示例(嵌套数组):
{
"courses": [
{"name": "数学", "score": 95},
{"name": "英语", "score": 88},
{"name": "物理", "score": null}
]
}
JSON格式字符串的完整实例
结合以上规则,我们通过几个实际场景展示JSON格式字符串的书写方法。
实例1:用户信息(对象结构)
{
"userId": 10086,
"username": "wangwu",
"profile": {
"nickname": "王五",
"age": 30,
"gender": "男",
"avatar": "https://example.com/avatar.jpg"
},
"tags": ["编程", "摄影", "旅行"],
"isVip": true,
"balance": null
}
实例2:商品列表(数组结构)
[
{
"id": "P001",
"name": "无线蓝牙耳机",
"price": 299.00,
"stock": 100,
"specs": ["黑色", "白色", "蓝色"]
},
{
"id": "P002",
"name": "机械键盘",
"price": 599.00,
"stock": 50,
"specs": ["青轴", "红轴"],
"discount": 0.9
}
]
实例3:复杂嵌套(对象+数组混合)
{
"projectName": "电商平台重构",
"team": [
{
"name": "赵六",
"role": "前端开发",
"skills": ["React", "TypeScript", "JSON"]
},
{
"name": "钱七",
"role": "后端开发",
"skills": ["Java", "MySQL", "Redis"]
}
],
"config": {
"database": {
"host": "localhost",
"port": 3306,
"tables": ["user", "product", "order"]
},
"features": ["支付", "物流", "评价"],
"isDebug": false
}
}
书写JSON格式字符串的常见错误
初学者在书写JSON时容易因语法不规范导致解析失败,以下是高频错误及规避方法:
键未用双引号包裹(或用单引号)
// 错误:键用单引号
{'name': '张三'}
// 错误:键无引号
{name: '张三'}
// 正确:键必须用双引号
{"name": "张三"}
字符串值用单引号或无引号
// 错误:字符串值用单引号
{"name": '张三'}
// 错误:字符串值无引号
{name: 张三}
// 正确:字符串值必须用双引号
{"name": "张三"}
末尾多逗号
// 错误:最后一个键值对后有多余逗号
{"name": "张三", "age": 25,}
// 错误:数组末尾有多余逗号
[1, 2, 3,]
// 正确:最后一个元素后无逗号
{"name": "张三", "age": 25}
[1, 2, 3]
使用JSON不支持的数据类型
// 错误:使用undefined
{"result": undefined}
// 错误:使用函数
{"sayHello": function() {console.log("hi")}}
// 错误:使用日期对象(需转为字符串)
{"birthday": new Date("1990-01-01")} // 正确应为:"birthday": "1990-01-01"
// 正确:仅支持JSON原生类型
{"result": null, "sayHello": "hi", "birthday": "1990-01-01"}
嵌套结构未正确闭合
// 错误:对象未闭合
{"name": "张三", "age": 25
// 错误:数组未闭合
[1, 2, 3, {
// 正确:所有结构完整闭合
{"name": "张三", "age": 25}
[1, 2, 3]
如何验证JSON格式字符串是否正确?
书写完成后,可通过以下方式验证JSON格式是否合法:
- 在线工具:使用JSONLint(https://jsonlint.com/)等在线校验工具,粘贴字符串即可检测语法错误。
- 代码验证:在JavaScript中,使用
JSON.parse()尝试解析——若解析失败(抛出SyntaxError),则格式错误。try { const jsonStr = '{"name": "张三", "age": 25}'; const obj = JSON.parse(jsonStr); console.log(obj); // 解析成功:输出 { name: '



还没有评论,来说两句吧...