python字典和json字符串如何相互转化?

Python 的字典(dict) 和 JSON 字符串 是非常常用的数据结构和格式。Python 提供了非常简便的方法来将字典与 JSON 字符串相互转化,主要使用 json 模块中的两个函数:json.dumps()json.loads()

1. 字典转 JSON 字符串

将 Python 字典转换为 JSON 字符串使用的是 json.dumps() 函数。

示例:
python 复制代码
import json

# Python 字典
data_dict = {
    'name': 'AI',
    'type': 'Technology',
    'year': 2024
}

# 转换为 JSON 字符串
json_str = json.dumps(data_dict)
print(json_str)

输出:

python 复制代码
{"name": "AI", "type": "Technology", "year": 2024}
  • json.dumps() 参数
    • indent:可以美化输出,指定缩进级别。例如 json.dumps(data_dict, indent=4) 会生成带缩进的 JSON 字符串。
    • sort_keys=True:会将输出的 JSON 键按字母顺序排序。
    • ensure_ascii=False:用于处理非 ASCII 字符(如中文),避免转换为 Unicode 形式。

2. JSON 字符串转字典

要将 JSON 字符串转换为 Python 字典,可以使用 json.loads() 函数。

示例:
python 复制代码
import json

# JSON 字符串
json_str = '{"name": "AI", "type": "Technology", "year": 2024}'

# 转换为 Python 字典
data_dict = json.loads(json_str)
print(data_dict)

输出:

python 复制代码
{'name': 'AI', 'type': 'Technology', 'year': 2024}

3. 字典与 JSON 文件的转换

在实际项目中,可能需要将字典保存为 JSON 文件或从 JSON 文件读取字典。json 模块提供了 dump()load() 方法来处理文件的输入输出。

将字典保存为 JSON 文件:
python 复制代码
import json

data_dict = {
    'name': 'AI',
    'type': 'Technology',
    'year': 2024
}

# 保存为 JSON 文件
with open('data.json', 'w') as json_file:
    json.dump(data_dict, json_file, indent=4)
从 JSON 文件读取为字典:
python 复制代码
import json

# 从 JSON 文件中读取数据
with open('data.json', 'r') as json_file:
    data_dict = json.load(json_file)
    print(data_dict)

4. 处理特殊数据类型

在 Python 中,JSON 数据类型与 Python 数据类型基本对应,但是某些特殊类型(如 datetimeset)需要自定义处理,因为 JSON 不支持这些类型。可以通过自定义编码器来处理。

例如,处理 datetime
python 复制代码
import json
from datetime import datetime

# Python 字典包含 datetime 类型
data = {
    'name': 'AI',
    'timestamp': datetime.now()
}

# 自定义编码器
class DateTimeEncoder(json.JSONEncoder):
    def default(self, obj):
        if isinstance(obj, datetime):
            return obj.isoformat()
        return super(DateTimeEncoder, self).default(obj)

# 转换为 JSON 字符串
json_str = json.dumps(data, cls=DateTimeEncoder)
print(json_str)
相关推荐
数字化顾问22 分钟前
从索引失效到毫秒级响应——SQL 优化实战案例:从慢查询到高性能的完整指南之电商大促篇
java·开发语言·数据库
Carl_奕然26 分钟前
【大模型】Agent之:从Prompt到Context的演进之路
人工智能·python·语言模型·prompt·多模态
eqwaak038 分钟前
实战项目与工程化:端到端机器学习流程全解析
开发语言·人工智能·python·机器学习·语言模型
大飞pkz1 小时前
【设计模式】观察者模式
开发语言·观察者模式·设计模式·c#
upgrador2 小时前
PYTHON:Python 新版本下载安装更新&py文件Pycharm运行指南
开发语言·python
闲人编程2 小时前
使用Django从零开始构建一个个人博客系统
后端·python·django·接口·restful·web·个人博客
做运维的阿瑞2 小时前
从入门到精通:Django的深度探索之旅
开发语言·后端·python·系统架构·django
czliutz2 小时前
Phpstudy博客网站apache2日志分析python代码
开发语言·python
AI数据皮皮侠2 小时前
全国各省市绿色金融指数及原始数据(1990-2022年)
大数据·人工智能·python·深度学习·机器学习·金融
李宥小哥2 小时前
C#基础08-面向对象
开发语言·c#