在 python 中,将 json 字符串转换为字典非常简单,使用内置的 json 模块即可。
基本方法
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']) # 张三
完整示例
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}")
处理异常
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
import json
# 从文件读取 json
with open('data.json', 'r', encoding='utf-8') as f:
data = json.load(f) # 注意是 load() 不是 loads()
print(data)
注意事项
json 格式要求:
- 键名必须用双引号
"包裹(单引号会报错) - 字符串值必须用双引号
- 布尔值用
true/false(python 中是true/false) - 空值用
null(python 中是none)
loads() vs load():
json.loads(): 从字符串解析json.load(): 从文件对象解析
中文处理:
# 确保正确处理中文
json_str = '{"name": "张三"}'
data = json.loads(json_str)
print(data['name']) # 正常显示中文
# 输出时保持中文
print(json.dumps(data, ensure_ascii=false)) # {"name": "张三"}
反向操作:字典转 json 字符串
import json
data = {
"name": "赵六",
"age": 35,
"city": "广州"
}
# 转换为 json 字符串
json_str = json.dumps(data, ensure_ascii=false, indent=2)
print(json_str)
这样就可以轻松地在 json 字符串和 python 字典之间进行转换了!
以上就是基于python将json字符串转换为字典的详细内容,更多关于python json转字典的资料请关注代码网其它相关文章!
发表评论