![[智能体-165]:python字典格式与JSON格式的转化](http://pic.xiahunao.cn/yaotu/[智能体-165]:python字典格式与JSON格式的转化)
Python 内置json标准库实现转换字典是内存数据结构JSON 是字符串格式二者本质不同。一、核心方法功能函数说明字典 → JSON 字符串json.dumps()序列化JSON 字符串 → 字典json.loads()反序列化字典写入 JSON 文件json.dump()写入文件读取 JSON 文件 → 字典json.load()读取文件二、基础代码示例1. 字典 转 JSON 字符串dumpspython运行import json # Python 字典 data { name: 张三, age: 25, hobby: [游泳, 阅读], is_student: False } # 转为 JSON 字符串 json_str json.dumps(data) print(JSON 字符串, json_str) print(类型, type(json_str)) # class str常用参数美化输出ensure_asciiFalse保留中文必加否则中文变 unicode 编码indent4缩进格式化方便阅读python运行json_str json.dumps(data, ensure_asciiFalse, indent4) print(json_str)2. JSON 字符串 转 字典loadspython运行# 已有 JSON 字符串 json_str {name: 李四, age: 22, hobby: [跑步]} # 解析为字典 dict_data json.loads(json_str) print(字典, dict_data) print(类型, type(dict_data)) # class dict # 按 key 取值 print(dict_data[name])三、读写 JSON 文件dump /load1. 字典写入.json文件python运行data {title: 测试, content: JSON 文件操作} # 写入文件 with open(test.json, w, encodingutf-8) as f: json.dump(data, f, ensure_asciiFalse, indent4)2. 读取.json文件转为字典python运行# 读取文件 with open(test.json, r, encodingutf-8) as f: file_data json.load(f) print(file_data, type(file_data))四、关键注意事项避坑1. 数据类型差异JSON 支持类型有限转换会自动适配PythonTrue/False→ JSONtrue/falsePythonNone→ JSONnull元组 tuple会转为 JSON 数组listpython运行import json d {data: (1, 2, 3)} # 元组 res json.dumps(d) print(res) # 输出数组{data: [1, 2, 3]}2. 键名必须是字符串JSON 要求键只能是字符串Python 字典数字键会自动转字符串python运行d {100: 数字键} s json.dumps(d) print(s) # {100: 数字键}3. 不支持的类型Python 特有类型datetime、自定义对象、集合set无法直接转 JSON会报错需要手动转换。4. 引号区别JSON 标准只允许双引号Python 字典单 / 双引号都可以错误写法JSON 字符串用单引号loads()解析失败五、结合 LangChain 实战场景常用于大模型输出结构化解析python运行import json from langchain_core.output_parsers import JsonOutputParser from langchain_core.prompts import ChatPromptTemplate from langchain_openai import ChatOpenAI llm ChatOpenAI(temperature0) prompt ChatPromptTemplate.from_template( 提取信息并返回纯JSON姓名、年龄 内容{info} ) chain prompt | llm # 模型返回 JSON 格式字符串 resp chain.invoke({info: 王五28岁}) json_str resp.content # 字符串转字典 result json.loads(json_str) print(result[姓名], result[年龄])六、速记总结内存互转dumps(字典→串) /loads(串→字典)文件互转dump(写文件) /load(读文件)中文必加ensure_asciiFalse格式化查看搭配indent参数JSON 仅支持对象、数组、字符串、数字、布尔、null