Python 3 介绍(二十五)--Python3 JSON 数据解析介绍

目录

1. 安装与导入

2. JSON 数据格式

3. JSON 数据解析示例

3.1 将 Python 数据编码为 JSON 字符串

3.2 解析 JSON 字符串为 Python 数据

4. 高级用法

4.1 自定义对象编码

4.2 读写文件

5. 实际应用场景

5.1 解析 API 响应

5.2 保存配置文件

6. 注意事项

总结


 

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。Python 提供了内置模块 json 来处理 JSON 数据。通过 json 模块,你可以轻松地将 Python 数据编码成 JSON 字符串,或将 JSON 字符串解码成 Python 数据类型。

1. 安装与导入

Python 的 json 模块是内置的,因此不需要额外安装。直接导入即可使用:

 

python

深色版本

1import json

2. JSON 数据格式

JSON 数据通常采用以下几种格式:

  • 对象:由键值对组成,键必须是字符串,值可以是任意数据类型。
  • 数组:值的有序集合。
  • 字符串:用双引号包围的 Unicode 字符序列。
  • 数值:整数或浮点数。
  • 布尔值true 或 false
  • null:表示空值。

3. JSON 数据解析示例

3.1 将 Python 数据编码为 JSON 字符串

 

python

深色版本

1import json
2
3# Python 字典
4data = {
5    "name": "Alice",
6    "age": 30,
7    "is_student": False,
8    "courses": ["Math", "Physics"],
9    "details": {
10        "address": "123 Main St",
11        "phone": None
12    }
13}
14
15# 将 Python 数据编码为 JSON 字符串
16json_string = json.dumps(data, indent=4)
17
18print(json_string)

输出结果将是:

 

json

深色版本

1{
2    "name": "Alice",
3    "age": 30,
4    "is_student": false,
5    "courses": [
6        "Math",
7        "Physics"
8    ],
9    "details": {
10        "address": "123 Main St",
11        "phone": null
12    }
13}

3.2 解析 JSON 字符串为 Python 数据

 

python

深色版本

1import json
2
3# JSON 字符串
4json_string = """
5{
6    "name": "Bob",
7    "age": 25,
8    "is_student": true,
9    "courses": ["Chemistry", "Biology"],
10    "details": {
11        "address": "456 Oak St",
12        "phone": null
13    }
14}
15"""
16
17# 解析 JSON 字符串为 Python 字典
18data = json.loads(json_string)
19
20print(data)

输出结果将是:

 

python

深色版本

1{
2    'name': 'Bob',
3    'age': 25,
4    'is_student': True,
5    'courses': ['Chemistry', 'Biology'],
6    'details': {'address': '456 Oak St', 'phone': None}
7}

4. 高级用法

4.1 自定义对象编码

如果你需要将自定义的 Python 对象编码为 JSON,可以使用 default 参数来自定义转换逻辑。

 

python

深色版本

1import json
2
3class Student:
4    def __init__(self, name, age):
5        self.name = name
6        self.age = age
7
8# 创建一个学生对象
9student = Student("Charlie", 22)
10
11# 定义一个转换函数
12def student_to_dict(obj):
13    if isinstance(obj, Student):
14        return {"name": obj.name, "age": obj.age}
15    raise TypeError(f"Object of type {obj.__class__.__name__} is not JSON serializable")
16
17# 使用自定义转换函数编码
18json_string = json.dumps(student, default=student_to_dict)
19
20print(json_string)

输出结果将是:

 

json

深色版本

1{"name": "Charlie", "age": 22}

4.2 读写文件

你还可以使用 json 模块提供的 dumpload 方法来直接从文件读写 JSON 数据。

 

python

深色版本

1import json
2
3# 写入 JSON 数据到文件
4data = {"key": "value"}
5with open('data.json', 'w') as f:
6    json.dump(data, f)
7
8# 从文件读取 JSON 数据
9with open('data.json', 'r') as f:
10    data = json.load(f)
11    print(data)

5. 实际应用场景

5.1 解析 API 响应

假设你正在处理一个 RESTful API 的响应,可以使用 json 模块来解析返回的 JSON 数据。

 

python

深色版本

1import requests
2import json
3
4response = requests.get('https://api.example.com/data')
5data = response.json()  # 直接解析 JSON 响应
6
7# 或者手动解析
8data = json.loads(response.text)
9
10print(data)

5.2 保存配置文件

JSON 也是一种常用的配置文件格式。可以使用 json 模块来读写配置文件。

 

python

深色版本

1import json
2
3# 保存配置文件
4config = {"host": "localhost", "port": 8080}
5with open('config.json', 'w') as f:
6    json.dump(config, f, indent=4)
7
8# 读取配置文件
9with open('config.json', 'r') as f:
10    config = json.load(f)
11    print(config)

6. 注意事项

  1. Unicode 支持:JSON 支持 Unicode 字符,这意味着你可以轻松地处理非英文字符。
  2. 错误处理:在解析 JSON 数据时,如果数据格式不正确,会抛出 json.JSONDecodeError 异常。
  3. 性能优化:在处理大量数据时,可以考虑使用第三方库如 ujson 来提高性能。
  4. 安全性:在处理不可信来源的 JSON 数据时,要小心潜在的安全风险,如 JSONP 攻击。

总结

Python 的 json 模块提供了简单而强大的工具来处理 JSON 数据。通过上述示例,你应该能够掌握如何使用 json 模块来编码和解码 JSON 数据,以及如何处理 JSON 文件和实际应用场景中的数据。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值