一. json 数据和python对象之间的转换
1、把字典转换为 json 格式的字符串
json 的 dumps() 函数用于把字典结构转换为 json 格式的字符串。
import json
import pprint
dict1 = {
'company': '湖北师范大学',
'address': '湖北省黄石市',
'employee': [
{'name': '张三', 'title': '讲师', },
{'name': '李四', 'title': '讲师', },
{'name': '王五', 'title': '班主任', }
],
'details': {
'start': '1973年',
'platform': '教室',
'business': 'python编程教育',
}
}
json_string = json.dumps(x)
print(json_string)
结果:
{"company": "湖北师范大学", "address": "湖北省黄石市", "employee": [{"name": "张三", "title": "讲师"}, {"name": "李四", "title": "讲师"}, {"name": "王五","title": "班主任"}], "details": {"start": "1973年", "platform": "教室",
"business": "python编程教育"}}
2、把JSON格式的字符串转换为字典
json 的 loads() 方法用于把 josn格式的字符串转换为字典对象:
接着上面的代码
pprint.pprint(json.loads(json_string))
结果:
{'address': '湖北省黄石市',
'company': '湖北师范大学',
'details': {'business': 'python编程教育', 'platform': '教室', 'start':
'1973年'},
'employee': [{'name': '张三', 'title': '讲师'},
{'name': '李四', 'title': '讲师'},
{'name': '王五', 'title': '班主任'}]}
二. json和字典的区别
json是一种数据的格式,而字典是一种对象 ,json 的格式的数据只能是以{}和[]包裹起来的,里面的数据是用"“包起来的,而字典只能以{}来包裹,字典的数据可以是”",也可以是’'包裹起来的,
1有的时候会出现乱码的现象
可以试试这个,转换为ASCII码
json_str = json.dumps(dict1, ensure_ascii=False)
具体的代码演示:
# 默认的情况下会将中文编程 Unicode 编码
json_str = json.dumps(dict1)
print('json_str:', [json_str])
结果:
json_str: ['{"company": "\\u9752\\u706f\\u6559\\u80b2", "address": "\\u6e56\\u5357\\u7701\\u957f\\u6c99\\u5e02", "employee": [{"name": "\\u6b63\\u5fc3", "title": "\\u8bb2\\u5e08"}, {"name": "\\u5c71\\u79be", "title": "\\u8bb2\\u5e08"}, {"name": "\\u4e38\\u5b50", "title": "\\u73ed\\u4e3b\\u4efb"}], "details": {"start": "2019\\u5e74", "platform": "\\u817e\\u8baf\\u8bfe\\u5802", "business": "python\\u7f16\\u7a0b\\u57f9\\u8bad"}}']
使用之后的:
# 默认的情况下会将中文编程 Unicode 编码
json_str = json.dumps(dict1, ensure_ascii=False)
print('json_str:', [json_str])
结果:
json_str: ['{"company": "湖北师范大学", "address": "湖北省黄石市", "employee": [{"name": "张三", "title": "讲师"}, {"name": "李四", "title": "讲师"}, {"name": "王五", "title": "班主任"}], "details": {"start": "1973年", "platform": "教室", "business": "python编程教育"}}']