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 字典之间进行转换了!

相关推荐
英俊潇洒美少年6 小时前
Vue 生产环境打包:SourceMap、压缩、混淆、加密全解 + 最佳实践
前端·javascript·vue.js
小江的记录本6 小时前
【JVM虚拟机】垃圾回收GC:四种引用类型:强引用、软引用、弱引用、虚引用(附《思维导图》+《面试高频考点清单》)
java·jvm·spring boot·后端·python·spring·面试
APIshop6 小时前
Python 获取 1688 商品采集 API 接口 | 工厂货源自动化对接商品信息 | 无需选品
运维·python·自动化
巴博尔6 小时前
UNIAPP中NVUE页面 动画
android·前端·javascript·ios·uni-app
deepin_sir6 小时前
10 - 函数
开发语言·python
charlee447 小时前
《GIS基础原理与技术实践》配套案例(Python版)
python·conda·numpy·gis·环境配置
枫叶林FYL7 小时前
项目十:事件溯源仓储管理系统(WMS)仿真实现
开发语言·python
她说人狗殊途8 小时前
基于 vue-cli 创建
前端·javascript·vue.js
AZaLEan__9 小时前
前端移动端适配与 Bootstrap
前端·bootstrap·html
大家的林语冰9 小时前
Deno 2.8 正式发布,再次超越 Bun,史上最大的次版本升级诞生!
前端·javascript·node.js