JSON输入格式全解析:从基础到实践的完整指南
JSON是什么?为什么需要关注输入格式?
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,以易于人类阅读和编写的文本形式,结构化地存储和传输数据,它独立于编程语言,被广泛应用于Web前后端交互、API数据传输、配置文件存储等场景,无论是前端向服务器提交表单数据,还是后端返回接口响应,正确的JSON输入格式都是数据准确解析的前提,如果格式错误,可能导致数据读取失败、程序报错甚至系统异常,JSON的输入格式规范,是每个开发者的必备技能。
JSON输入格式的基础规则:5大核心结构
JSON的输入格式严格遵循一套语法规则,其核心可归纳为5种基本结构,所有复杂JSON数据都是由这些结构组合而成。
键值对(Key-Value Pair):JSON的“最小单元”
JSON最基本的数据形式是键值对,由“键(Key)”“冒号(:)”“值(Value)”三部分组成,键和值之间用冒号分隔,键值对之间用逗号(,)分隔。
- 键(Key):必须是字符串,必须用双引号()包裹,不能用单引号()或无引号。
"name"(正确)、'age'(错误)、gender(错误)。 - 值(Value):可以是6种基本数据类型之一:
- 字符串(String):用双引号包裹,如
"张三"。 - 数值(Number):整数或浮点数,如
25、14,无需引号。 - 布尔值(Boolean):
true或false(全小写,无需引号)。 - 空值(Null):
null(表示空值,无需引号)。 - 数组(Array):用方括号(
[])包裹的值的有序集合。 - 对象(Object):用花括号()包裹的键值对的集合。
- 字符串(String):用双引号包裹,如
示例:
{"name":"张三", "age":25, "isStudent":false}
对象(Object):多个键值对的“容器”
对象是键值对的集合,用花括号()包裹,内部键值对之间用逗号分隔,键必须是唯一的(重复键后出现的值会覆盖前面的值)。
示例:
{
"id": 1001,
"info": {
"phone":"13800138000",
"address":"北京市朝阳区"
}
}
注意:对象可以嵌套,内层的对象(如
"info")也是合法的JSON结构。
数组(Array):有序值的“列表”
数组是值的有序集合,用方括号([])包裹,值之间用逗号分隔,数组中的值可以是任意JSON数据类型(包括字符串、数值、布尔值、对象、数组等)。
示例:
["apple", "banana", "orange"]
[1, 2, 3, 4, 5]
[true, false, null]
[
{"name":"李四", "age":30},
{"name":"王五", "age":28}
]
数组支持嵌套,例如数组的值可以是另一个数组(二维数组及以上),如
[[1,2], [3,4]]。
字符串(String):带引号的“文本”
字符串是JSON中的文本数据,必须用双引号()包裹,内部可以包含双引号,但需用反斜杠(\)转义;也可以包含换行符、制表符等特殊字符,同样需要转义。
转义字符规则:
- 双引号:
\"(如"他说:"你好"") - 反斜杠:
\\(如"路径:C:\\Users") - 换行符:
\n - 制表符:
\t - 回车符:
\r
示例:
{"message":"他说:\"Hello, World!\"", "path":"C:\\Program Files"}
数值、布尔值与空值:基础“标量”
- 数值:整数(如
100)或浮点数(如14),不能包含前导零(如0123错误),也不能用科学计数法(如1e3错误,部分解析器可能支持但不符合严格规范)。 - 布尔值:
true(真)或false(假),全小写,首字母不能大写(如True错误)。 - 空值:
null(表示“无值”),不能写成NULL、Null或。
示例:
{"score":95.5, "isActive":true, "data":null}
JSON输入格式的“禁区”:这些错误要避免
除了正确的结构,还需避开常见的格式陷阱,否则会导致JSON解析失败:
键必须用双引号,不能用单引号或无引号
// 错误示例
{'name':'张三'} // 键和值用了单引号
{name:'张三'} // 键无引号
// 正确示例
{"name":"张三"}
值类型不能混淆,字符串数值需加引号
// 错误示例:数值加引号(会被当作字符串)
{"age":"25"}
// 正确示例:数值不加引号
{"age":25}
逗号不能多也不能少
- 键值对之间、数组元素之间需要逗号分隔,但最后一个元素后不能有逗号(部分解析器可能支持,但不符合严格规范)。
// 错误示例:最后一个键值对后有多余逗号 {"name":"张三", "age":25,} // 错误示例:数组元素间缺少逗号 [1 2 3] // 正确示例 {"name":"张三", "age":25} [1, 2, 3]
不能使用注释
JSON标准不支持注释(如或),但部分工具或解析器可能扩展支持,若需携带注释,可改用JSON5格式(非标准)或单独用字段存储(如{"comment":"用户信息", "data":{...}})。
// 错误示例:包含注释
{"name":"张三", // 姓名 "age":25}
// 正确做法:移除注释
{"name":"张三", "age":25}
特殊字符必须转义
字符串中的双引号、反斜杠等特殊字符需用\转义,否则会破坏JSON结构。
// 错误示例:字符串中未转义双引号
{"text":"他说:"你好""}
// 正确示例:转义双引号
{"text":"他说:\"你好\""}
不同场景下的JSON输入格式示例
理解基础规则后,结合实际场景练习,能更快JSON输入格式,以下是常见场景的示例:
用户注册表单数据
前端提交用户信息时,通常以JSON格式传输数据:
{
"username":"zhangsan123",
"password":"Abc123!@#",
"email":"zhangsan@example.com",
"profile":{
"nickname":"张三",
"gender":"male",
"birthday":"1995-01-01"
},
"hobbies":["reading", "running", "coding"]
}
API响应数据(查询订单详情)
后端返回订单信息时,JSON格式需清晰表达数据层级:
{
"code":200,
"message":"查询成功",
"data":{
"orderId":"ORD202310280001",
"customerName":"李四",
"amount":299.00,
"status":"shipped",
"items":[
{"productId":"P1001", "productName":"无线鼠标", "quantity":1, "price":99.00},
{"productId":"P1002", "productName":"键盘", "quantity":1, "price":200.00}
],
"shippingAddress":{
"province":"广东省",
"city":"深圳市",
"detail":"南山区科技园路1号"
}
}
}
配置文件(数据库连接配置)
JSON也常用于存储应用配置,需确保键名清晰、



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