Python JSON 方法使用

时间:2024-12-12 13:09:00

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。Python 标准库提供了一个名为 json 的模块,专门用于处理 JSON 数据。这个模块提供了将 Python 对象编码成 JSON 字符串,以及将 JSON 字符串解码成 Python 对象的函数。

一、导入 json 模块

在使用 Python 的 json 模块之前,你需要先导入它:

python复制代码
 import json

二、编码(Python 对象到 JSON 字符串)

json 模块提供了 json.dumps() 方法,用于将 Python 对象编码成 JSON 字符串。

  • 基本用法
python复制代码
 data = {
 
     "name": "Alice",
 
     "age": 25,
 
     "is_student": True,
 
     "scores": [85, 90, 92],
 
     "address": {
 
         "city": "Wonderland",
 
         "street": "Rainbow Road"
 
     }
 
 }
 
  
 
 json_str = json.dumps(data)
 
 print(json_str)

输出将是一个 JSON 格式的字符串:

json复制代码
 {"name": "Alice", "age": 25, "is_student": true, "scores": [85, 90, 92], "address": {"city": "Wonderland", "street": "Rainbow Road"}}
  • 参数
  • indent:用于美化输出,指定缩进级别。
  • sort_keys:是否对字典的键进行排序。
  • ensure_ascii:默认为 True,输出所有非 ASCII 字符转义字符;如果为 False,则尝试直接使用 Unicode 字符。
python复制代码
 json_str_pretty = json.dumps(data, indent=4, sort_keys=True, ensure_ascii=False)
 
 print(json_str_pretty)

三、解码(JSON 字符串到 Python 对象)

json 模块提供了 json.loads() 方法,用于将 JSON 字符串解码成 Python 对象。

  • 基本用法
python复制代码
 json_str = '{"name": "Alice", "age": 25, "is_student": true, "scores": [85, 90, 92], "address": {"city": "Wonderland", "street": "Rainbow Road"}}'
 
  
 
 data = json.loads(json_str)
 
 print(data)
 
 print(type(data))  # <class 'dict'>

输出将是一个 Python 字典。

  • 处理异常
  • 在解码过程中,如果 JSON 字符串格式不正确,会抛出 json.JSONDecodeError 异常。
python复制代码
 try:
 
     invalid_json_str = '{"name": "Alice", "age": "twenty-five"}'  # age 应该是整数而不是字符串
 
     data = json.loads(invalid_json_str)
 
 except json.JSONDecodeError as e:
 
     print(f"JSON 解码错误: {e}")

四、文件操作

除了处理字符串,json 模块还提供了 json.dump() 和 json.load() 方法,用于直接将 Python 对象写入 JSON 文件和从 JSON 文件读取 Python 对象。

  • json.dump()
python复制代码
 with open('data.json', 'w', encoding='utf-8') as f:
 
     json.dump(data, f, indent=4, ensure_ascii=False)
  • json.load()
python复制代码
 with open('data.json', 'r', encoding='utf-8') as f:
 
     loaded_data = json.load(f)
 
 print(loaded_data)

五、总结

Python 的 json 模块提供了一种简单而强大的方式来处理 JSON 数据。无论是将 Python 对象编码成 JSON 字符串,还是从 JSON 字符串解码成 Python 对象,json 模块都提供了灵活且易于使用的函数。此外,通过文件操作方法,你还可以轻松地将 JSON 数据存储到文件中或从文件中读取。掌握这些技能将帮助你更有效地处理 JSON 数据,并在 Python 编程中更加游刃有余。