JSON文件怎么看代码:从基础到实践的全面解析
什么是JSON文件?为什么需要看懂它的“代码”?
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,以“键值对”(Key-Value Pair)为核心结构,简洁、易读、易解析,被广泛应用于Web开发、API接口、配置文件等场景,当我们说“看JSON文件的代码”,本质上是通过理解JSON的语法规则和结构,解读其中存储的数据信息——无论是读取API返回的用户数据,还是修改项目的配置参数,都离不开对JSON代码的解析能力。
JSON文件的核心语法规则:像“读字典”一样看懂结构
JSON的代码结构类似Python中的字典或JavaScript中的对象,但语法更严格,以下5个核心规则,就能快速看懂任意JSON文件:
数据类型:JSON中只有6种“基本元素”
JSON中的值(Value)只能是以下6种类型,看到这些符号就能判断数据类型:
- 字符串(String):用双引号包裹,如
"name": "张三"。 - 数字(Number):整数或浮点数,如
"age": 25、"price": 99.9(不支持单引号或科学计数法以外的格式)。 - 布尔值(Boolean):
true或false(全小写,无引号)。 - 空值(Null):
null(表示“无值”,类似Python的None)。 - 数组(Array):用方括号
[]包裹,多个元素用逗号分隔,如"hobbies": ["读书", "游泳"]。 - 对象(Object):用花括号包裹,多个键值对用逗号分隔,如
"address": {"city": "北京", "district": "朝阳区"}。
键值对:JSON的“核心骨架”
JSON的核心是“键值对”,格式为"键": 值,键”必须是字符串(双引号不可省略),“值”可以是上述6种类型。
{
"user_id": 1001,
"username": "example",
"is_active": true,
"avatar": null
}
解读:这是一个用户信息的JSON对象,包含4个键值对——user_id(数字)、username(字符串)、is_active(布尔值)、avatar(空值)。
嵌套结构:JSON的“嵌套套娃”
JSON支持数组嵌套对象、对象嵌套数组,形成复杂结构,看嵌套时“从外到内,逐层拆解”:
{
"order_id": "ORD20240501001",
"customer": {
"name": "李四",
"contact": {
"phone": "13800138000",
"email": "lisi@example.com"
}
},
"products": [
{"id": "P001", "name": "笔记本电脑", "price": 4999},
{"id": "P002", "name": "无线鼠标", "price": 99}
]
}
解读步骤:
- 最外层是订单对象(
order_id、customer、products); customer是嵌套的对象,包含name和嵌套的contact对象;contact又是嵌套对象,包含phone和email;products是数组,每个元素是包含id、name、price的对象。
分隔符:逗号与花括号的“用法禁忌”
- 逗号:分隔同级的键值对或数组元素,但最后一个元素后不能加逗号(否则会报错)。
✅ 正确:{"a": 1, "b": 2}
❌ 错误:{"a": 1, "b": 2, }(末尾逗号) - 花括号和方括号
[]:必须成对出现,嵌套时注意层级匹配。
✅ 正确:[{"a": 1}, {"b": 2}]
❌ 错误:[{"a": 1}, {"b": 2}(缺少])
注释:JSON原生不支持注释,但工具可“曲线救国”
JSON标准格式中不支持注释(如或),因为它是“纯数据格式”,不是编程语言,但实际开发中,为了方便调试,可通过以下方式“变相添加注释”:
- 用
"comment"字段作为占位符:{"name": "张三", "comment": "这是用户信息"}; - 通过工具(如VS Code的“JSON with Comments”插件)支持带注释的JSON(扩展名为
.jsonc)。
如何“看懂”JSON文件的代码?分场景实践
场景1:直接打开JSON文件(文本形式)
- 工具推荐:
- 纯文本编辑器(记事本、VS Code、Sublime Text):直接打开显示原始代码,适合查看简单结构;
- JSON可视化工具(如JSON Formatter、Online JSON Viewer):将代码格式化并生成树状图,直观展示嵌套关系(搜索“JSON Formatter”即可在线使用)。
- 示例:用VS Code打开
user.json文件,会显示:{"id":1001,"name":"张三","age":25,"is_active":true,"hobbies":["编程","摄影"]}通过VS Code的“格式化文档”功能(快捷键
Shift+Alt+F),可自动整理为易读的缩进格式:{ "id": 1001, "name": "张三", "age": 25, "is_active": true, "hobbies": [ "编程", "摄影" ] }
场景2:从编程语言中读取JSON代码(解析JSON)
开发中常需将JSON字符串转换为编程语言中的对象/字典,或反之,不同语言的解析方法如下:
Python:用json模块解析
import json
# JSON字符串
json_str = '{"name": "张三", "age": 25, "hobbies": ["编程", "摄影"]}'
# 解析为Python字典
data = json.loads(json_str)
print(data["name"]) # 输出:张三
print(data["hobbies"][0]) # 输出:编程
# Python字典转JSON字符串
python_dict = {"id": 1001, "city": "北京"}
json_str_new = json.dumps(python_dict, ensure_ascii=False, indent=2)
print(json_str_new)
# 输出:
# {
# "id": 1001,
# "city": "北京"
# }
JavaScript:用JSON对象解析
// JSON字符串
let jsonStr = '{"name": "张三", "age": 25, "hobbies": ["编程", "摄影"]}';
// 解析为JavaScript对象
let data = JSON.parse(jsonStr);
console.log(data.name); // 输出:张三
console.log(data.hobbies[0]); // 输出:编程
// JavaScript对象转JSON字符串
let jsObj = {id: 1001, city: "北京"};
let jsonStrNew = JSON.stringify(jsObj, null, 2);
console.log(jsonStrNew);
// 输出:
// {
// "id": 1001,
// "city": "北京"
// }
场景3:通过API获取JSON数据(动态解析)
调用API时,服务器返回的响应体通常是JSON格式,需通过HTTP请求获取数据,再解析为语言对象,例如用Python的requests库调用GitHub API:
import requests
import json
# 发送GET请求获取用户信息
url = "https://api.github.com/users/octocat"
response = requests.get(url)
# 检查响应状态码(200表示成功)
if response.status_code == 200:
# 响应体是JSON字符串,直接解析为字典
user_data = response.json() # requests库内置json()方法
print(f"用户名: {user_data['name']}")
print(f"公开仓库数: {user_data['public_repos']}")
else:
print(f"请求失败,状态码: {response.status_code}")
输出:
用户名: The Octocat
公开仓库数: 8



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