# python json模块核心方法总结
一.核心的方法
- json.dump()
- json.dumps()
- json.load()
- json.loads()
1.json.dumps()
dump在计算机中,是转存、导出、保存的意思,那么dumps,即dump string,将python对象的数据转换为josn字符流的数据
dic = {
'name': 'tom',
"age": 18,
"friends": (
'mick',
'jerry'
),
'text': 'hello world'
}
# obj --> json
res = json.dumps(dic)
print(res)
# 结果:
# {"name": "tom", "age": 18, "friends": ["mick", "jerry"], "text": "hello world"}
json中字符串对应的使用的是双引号,所以 python中的 ‘name’ 变成了 “name”;python中tuple对应的是json中的arr,所以出现了以下变化,( ‘mick’, ‘jerry’ ) — >[“mick”, “jerry”]
2.json.dump()
dump的操作实现的功能是将python对象转化成json数据,并存储到文件中
dic = {
'name': 'tom',
"age": 18,
"friends": (
'mick',
'jerry'
),
'text': 'hello world'
}
fp = open('./dic.json', 'w', encoding='utf-8')
# obj --> json 并且将json写入文件
json.dump(dic, fp, ensure_ascii=False)
# fp = file place 作用是指定文件位置和读写方式
3.json.load()
load的含义是加载,json.load()意思是,从文件中读取到json数据,并转化为python数据
fp = open('./dic.json', 'r', encoding='utf-8')
# 从文件中读取json数据
res = json.load(fp)
print(res)
# 结果:{'name': 'tom', 'age': 18, 'friends': ['mick', 'jerry'], 'text': 'hello world'}
print(type(res))
# 结果:<class 'dict'>
4.json.loads()
即doad string,将json数据加载成python数据
# 这是一个json格式的字符串
json_text = '{"name": "tom", "age": 18, "friends": ["mick", "jerry"], "text": "hello world"}'
# loads = load from string
res = json.loads(json_text)
print(res)
# 结果:{'name': 'tom', 'age': 18, 'friends': ['mick', 'jerry'], 'text': 'hello world'}
print(type(res))
# 结果: <class 'dict'>
二.python类型和json类型互转对照表
- python数据类型转换成json格式
Python数据类型 | JSON |
---|---|
dict | Object |
list, tuple | array |
str | string |
int, float, int- & float-derived Enums | numbers |
True | true |
False | false |
None | null |
- json格式转换成python数据类型
JSON | Python数据类型 |
---|---|
object | dict |
array | list |
string | str |
number(int) | int |
number(real) | float |
true | True |
false | False |
null | None |
注意:
需要特别注意的是dump在对中文进行保存的时候,中文会被默认转化成unicode编码
fp = open('./dic.json', 'w', encoding='utf-8')
# 张三 --- > "\u5f20\u4e09" 默认中文会被转化成Unicode编码
dic = {
'name': '张三',
'age': 18
}
json.dump(dic, fp)
打开文件后,默认中文被转化为Ubicode编码
解决办法:
添加关键词,ensure_ascii=False ,这样就不会自动转化成Unicode编码了
fp = open('./dic.json', 'w', encoding='utf-8')
# 张三 --- > "\u5f20\u4e09" 默认中文会被转化成Unicode编码
dic = {
'name': '张三',
'age': 18
}
# 这里加了 ensure_ascii=False
json.dump(dic, fp, ensure_ascii=Fals
打开文件后,中文能正常显示: