JSON教程:Python解析JSON文件完整步骤(新手一看就会)

admin 综合编程开发技术 3


用 Python 处理数据的新手是不是都遇到过这种情况:拿到一个 JSON 文件,想提取里面的信息却不知道从何下手?运行代码要么报 “JSONDecodeError”,要么提取的内容总是空的?其实 Python 解析 JSON 文件特别简单,自带的 json 模块就能搞定,今天兔子哥就带大家走一遍完整步骤,从读取文件到提取数据,每一步都附代码示例,哪怕你刚学 Python,跟着这篇教程做也能轻松学会。
之前在 Python 交流群里看到很多朋友说:“JSON 文件看着像字典,可就是取不出数据”“明明文件路径对的,却总提示找不到文件”。其实这些问题都是步骤没走对,掌握了正确方法,解析 JSON 比操作 Excel 还简单。

第一步:先搞懂,Python 靠什么解析 JSON?


Python 自带一个 “json 模块”,专门用来处理 JSON 数据,不用额外安装,导入就能用。就像咱们用勺子喝汤、用筷子吃饭,解析 JSON 就得用这个模块里的工具。核心工具就两个:
  • json.load():用来读 JSON 文件,直接把文件里的内容转成 Python 字典或列表。
  • json.loads():用来解析 JSON 字符串,比如从 API 接口拿到的字符串数据,用它转成字典超方便。

刚开始学的时候,我总记混这两个函数,后来发现规律:带 “s” 的 loads () 处理 “字符串(string)”,不带 “s” 的 load () 处理 “文件(file)”,这么记就不容易错了。群里有个朋友说:“之前一直分不清这俩函数,跟着这个规律记,现在用着顺多了”,确实是这样,找对记忆方法能少走很多弯路。

第二步:解析 JSON 文件完整步骤,附代码示例


咱们以 “学生信息.json” 文件为例,手把手教大家解析。假设文件内容长这样:
json
{"class": "三年级二班","total_students": 30,"students": [{"name": "张三","age": 10,"scores": {"math": 95, "chinese": 88}},{"name": "李四","age": 11,"scores": {"math": 89, "chinese": 92}}]}

1. 导入 json 模块


不管做什么操作,第一步都得导入模块,这行代码必须写在最前面:
python
import json

这步简单吧?就像用手机前得先开机,导入模块就是给工具 “通电”。

2. 打开并读取 JSON 文件


json.load()函数读文件,记得用 “r” 模式打开(只读模式):
python
# 打开JSON文件with open("学生信息.json", "r", encoding="utf-8") as f:# 解析文件内容,转成Python字典data = json.load(f)

这里有两个关键点:
  • 文件路径要写对:如果文件和 Python 代码在同一个文件夹,直接写文件名;不在的话要写完整路径,比如 “D:/data/ 学生信息.json”。之前有朋友总报 “FileNotFoundError”,就是路径写错了。
  • 加 encoding="utf-8":如果 JSON 里有中文,不加这个可能会乱码,尤其是 Windows 系统,这步别省。

3. 提取数据,像操作字典一样简单


解析后的数据data是个 Python 字典,提取信息就用字典的键值对方法:
python
# 提取班级名称class_name = data["class"]print("班级:", class_name)  # 输出:班级:三年级二班# 提取学生总数total = data["total_students"]print("学生总数:", total)  # 输出:学生总数:30# 提取第一个学生的数学成绩first_student_math = data["students"][0]["scores"]["math"]print("第一个学生数学成绩:", first_student_math)  # 输出:第一个学生数学成绩:95

是不是和操作字典一模一样?JSON 里的数组(中括号包起来的)会转成 Python 列表,嵌套的 JSON 对象会转成字典,按层级取键就行。有个朋友分享说:“之前不知道嵌套结构怎么取,原来和列表索引结合起来用就行,试了一次就成功了”。

第三步:解析 JSON 字符串,处理 API 返回数据


除了读文件,咱们还常遇到从 API 接口拿到 JSON 字符串的情况,这时候用json.loads()函数:
python
# 假设从API拿到的JSON字符串json_str = '''{"name": "王五","age": 25,"hobby": ["打球", "编程"]}'''# 解析JSON字符串data = json.loads(json_str)# 提取爱好hobby = data["hobby"][0]print("爱好:", hobby)  # 输出:爱好:打球

注意字符串要用三引号包裹多行内容,不然格式容易错。解析后同样是字典,提取方法和文件解析一样。

第四步:常见错误及解决方法,新手必看


错误 1:JSONDecodeError(JSON 格式错误)


最常见的错,比如 JSON 里有多余的逗号、键没加双引号。解决办法:
  • 用在线 JSON 校验工具(比如JSON.cn)检查格式,把错误修正。
  • 仔细看报错提示里的 “line X column Y”,定位到具体行数修改。

错误 2:FileNotFoundError(文件找不到)


要么路径写错了,要么文件名不对。解决办法:
  • print(os.getcwd())查看当前工作目录,确保文件在这个目录里。
  • 路径里的斜杠用 “/”,别用 “\”(Windows 系统容易犯这错)。

错误 3:中文乱码


读取文件时没加 encoding="utf-8",或者 JSON 文件本身编码不对。解决办法:
  • 打开文件时加encoding="utf-8"
  • 用记事本打开 JSON 文件,另存为时选择 “UTF-8” 编码。

群里有个新手说:“之前解析带中文的 JSON 总乱码,加了 encoding 参数后就正常了,原来这么简单”,其实很多问题就差一个小参数。

第五步:进阶操作,把 Python 数据转成 JSON 文件


不光能解析 JSON,还能用json.dump()把 Python 字典转成 JSON 文件,保存数据超方便:
python
# Python字典data = {"name": "赵六","age": 30,"is_teacher": True}# 转成JSON文件保存with open("新数据.json", "w", encoding="utf-8") as f:# ensure_ascii=False 保证中文正常显示json.dump(data, f, ensure_ascii=False, indent=2)

indent=2能让 JSON 文件格式化显示,看起来更清楚,不然会挤成一行。

个人建议:多练真实案例,少背理论


解析 JSON 不用死记函数参数,多拿实际文件练手就行。刚开始可以找简单的 JSON 文件,比如只有几层键值对的,熟练后再挑战嵌套深的。遇到报错别慌,Python 的报错提示很清楚,比如 “KeyError: 'xxx'” 就是键不存在,检查是不是拼错了键名。
兔子哥刚开始学的时候,解析一个嵌套了 5 层的 JSON 文件,折腾了半天没取到数据,后来用print(data)打印整个结构,一层一层找键,很快就找到了问题。其实只要掌握 “先看结构,再按层级取键” 的方法,再复杂的 JSON 都能搞定。
希望这篇教程能帮到你,别再怕解析 JSON 文件了,打开 Python 试试今天的例子,你会发现原来这么简单。多练几个案例,以后处理 JSON 数据就能得心应手啦!

标签: json

发布评论 0条评论)

  • Refresh code

还木有评论哦,快来抢沙发吧~