Python 将 JSON 字符串转换为字典

在 Python 中,将 JSON 字符串转换为字典非常简单,使用内置的 json 模块即可。

基本方法

python 复制代码
import json

# JSON 字符串
json_str = '{"name": "张三", "age": 25, "city": "北京"}'

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

print(data_dict)
print(type(data_dict))  # <class 'dict'>
print(data_dict['name'])  # 张三

完整示例

python 复制代码
import json

# 示例 JSON 字符串
json_string = '''
{
    "name": "李四",
    "age": 30,
    "hobbies": ["阅读", "游泳", "编程"],
    "address": {
        "street": "中山路123号",
        "city": "上海"
    },
    "is_student": false
}
'''

# 转换为字典
data = json.loads(json_string)

# 访问数据
print(f"姓名: {data['name']}")
print(f"年龄: {data['age']}")
print(f"爱好: {data['hobbies']}")
print(f"城市: {data['address']['city']}")
print(f"是否学生: {data['is_student']}")

# 遍历字典
for key, value in data.items():
    print(f"{key}: {value}")

处理异常

python 复制代码
import json

json_str = '{"name": "王五", "age": 28'  # 缺少闭合括号,无效JSON

try:
    data = json.loads(json_str)
    print("转换成功:", data)
except json.JSONDecodeError as e:
    print(f"JSON解析错误: {e}")
    print(f"错误位置: 行 {e.lineno}, 列 {e.colno}")

从文件读取 JSON

python 复制代码
import json

# 从文件读取 JSON
with open('data.json', 'r', encoding='utf-8') as f:
    data = json.load(f)  # 注意是 load() 不是 loads()
    
print(data)

注意事项

  1. JSON 格式要求

    • 键名必须用双引号 " 包裹(单引号会报错)
    • 字符串值必须用双引号
    • 布尔值用 true/false(Python 中是 True/False
    • 空值用 null(Python 中是 None
  2. loads() vs load()

    • json.loads(): 从字符串解析
    • json.load(): 从文件对象解析
  3. 中文处理

    python 复制代码
    # 确保正确处理中文
    json_str = '{"name": "张三"}'
    data = json.loads(json_str)
    print(data['name'])  # 正常显示中文
    
    # 输出时保持中文
    print(json.dumps(data, ensure_ascii=False))  # {"name": "张三"}

反向操作:字典转 JSON 字符串

python 复制代码
import json

data = {
    "name": "赵六",
    "age": 35,
    "city": "广州"
}

# 转换为 JSON 字符串
json_str = json.dumps(data, ensure_ascii=False, indent=2)
print(json_str)

这样就可以轻松地在 JSON 字符串和 Python 字典之间进行转换了!

相关推荐
橙子家13 小时前
浏览器缓存之【基础键值存储】:Local storage 和 Session storage
前端
程序员龙叔15 小时前
编写高质量 Skill 系列 -- 如何设计需求分析与用例生成的 SKILL
自动化测试·软件测试·python·软件测试工程师·接口测试·性能测试·skill·ai测试
星星在线15 小时前
MusicFree:一个「All in One」的个人音乐服务器,让听歌回归简单
前端·后端
IT_陈寒16 小时前
Redis的SETNX并发问题让我加了三天班
前端·人工智能·后端
demo007x16 小时前
Docling 文档转换以及技术架构分析
前端·后端·程序员
京东云开发者17 小时前
京东市民服务又“上新”!这次是黑龙江“龙易办”
前端
袋鱼不重18 小时前
我的神奇同事,AI 用多了居然写了个 Open In Codex
前端·后端·ai编程
用户83562907805118 小时前
使用 Python 操作 Word 内容控件
后端·python
Fireworks18 小时前
深入vue3源码解读 -- 1、响应式的基础概念
前端
程序员黑豆18 小时前
JDK 下载安装与配置详细教程
java·前端·ai编程