Python基础教程:JSON模块

Python基础教程:JSON模块

概述

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。Python 的 json 模块提供了编码和解码 JSON 数据的方法。

1. 导入 JSON 模块

在 Python 中使用 JSON 功能之前,需要先导入 json 模块。

import json

2. JSON 编码:Python 对象转 JSON 字符串

使用 json.dumps() 方法可以将 Python 对象(如字典和列表)转换成 JSON 格式的字符串。

data = {
    'key1': 'value1',
    'key2': ['item1', 'item2'],
    'key3': 123,
}

json_str = json.dumps(data)
print(json_str)
# 输出: {"key1": "value1", "key2": ["item1", "item2"], "key3": 123}

3. JSON 解码:JSON 字符串转 Python 对象

使用 json.loads() 方法可以将 JSON 格式的字符串转换成 Python 对象。

json_str = '{"key1": "value1", "key2": ["item1", "item2"], "key3": 123}'
data = json.loads(json_str)
print(data)
# 输出: {'key1': 'value1', 'key2': ['item1', 'item2'], 'key3': 123}

4. 编码时的高级用法

4.1 指定编码字符

默认情况下,json.dumps() 方法会将非 ASCII 字符转换成 Unicode 转义序列。可以使用 ensure_ascii=False 参数保留非 ASCII 字符。

data = {'key': '你好'}
json_str = json.dumps(data, ensure_ascii=False)
print(json_str)
# 输出: {"key": "你好"}

4.2 指定缩进

使用 indent 参数可以指定缩进的空格数,使输出的 JSON 字符串更易读。

json_str = json.dumps(data, indent=4)
print(json_str)
# 输出:
# {
#     "key": "你好"
# }

4.3 使用自定义的编码函数

可以为 json.dumps() 方法提供一个 default 参数,该参数是一个函数,用于处理无法直接序列化的 Python 对象。

class MyClass:
    def __init__(self, value):
        self.value = value

def my_encoder(obj):
    if isinstance(obj, MyClass):
        return obj.__dict__

data = {'key': MyClass(123)}
json_str = json.dumps(data, default=my_encoder)
print(json_str)
# 输出: {"key": {"value": 123}}

5. 解码时的高级用法

5.1 大对象解码

当处理大型 JSON 数据时,可以使用 json.load() 方法的大对象解码功能。

with open('large_data.json', 'r') as file:
    data = json.load(file)

6. JSON 模块的其他功能

json 模块还提供了其他一些功能,如:

  • json.dump():将 Python 对象直接写入文件。
  • json.dumps():将 Python 对象转换成 JSON 格式的字符串,支持二进制编码。
  • json.loads():从字符串加载 JSON 数据,支持二进制编码。

7. 总结

通过本教程,我们学习了 Python json 模块的基本概念和使用方法。包括 JSON 编码(将 Python 对象转换为 JSON 字符串)和 JSON 解码(将 JSON 字符串转换为 Python 对象),以及一些高级用法,如指定编码字符、缩进、自定义编码函数和大对象解码。

JSON 是一种非常实用的数据交换格式,json 模块提供了强大的功能来处理 JSON 数据。希望本教程能帮助你更好地使用 Python 处理 JSON 数据。如果你有任何问题或建议,请在评论区留言讨论。

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值