稍微详细点介绍下json及四个函数作用「load、dump、loads、dumps」如下:
JSON是一种轻量级的数据交换语言,易于阅读,用来传输由属性值或者序列的值组成的数据对象。JSON 是 JS 对象的字符串表示法,它使用文本表示一个 JS 对象的信息,本质是一个字符串。很多时候我们见到的是形如字典(键值对)一样的数据格式,如下:
{
"a": "hello world!",
"b": [
1,
2,
3,
4
]
}
<class 'str'> # 类型为str
在Python中调用import json库,我们可以方便的使用dumps、loads、dump、load等方法在Python数据格式和JSON数据格式之间转换。下面来简单介绍一下这四个方法的用法和功能。
函数 | 描述 |
dumps | 将 Python数据类型(如字典,列表)编码成 JSON字符串 |
loads | 将已编码的 JSON字符串 解码为 Python数据类型(如上) |
dump | json.dump(data,fp),把数据data转换成 JSON str型 存到fp指向的文件(不限于json文件) |
load | json.load(fp),将fp指向的文件内容读取出来,并转换形如Python数据格式的 str 为Python数据格式 |
说明:JSON字符串 也就是 str 型,如上所说JS对象本质为字符串。
简单点理解就是:以上方法都是在 Python数据类型 和JSON字符串 之间转换,只是dumps、loads仅仅是转换,而dump、load方法会涉及到 存入内容 或 读取内容 到/从文件。
dumps 可以将 Python字典(列表等) 转换为 形如字典(列表等)的 str数据;loads 可以将形如字典(列表等)的 str数据 转换为 Python字典(列表等);dump将Python数据 转换为 str数据 存入文件;load 读取文件内容为 str数据(此时可以使用loads转换为Python对象)。
原始字典:
df = {'b':[1,2,3,4],'a':'hello world!'}
print(df)
print(type(df))
{'b': [1, 2, 3, 4], 'a': 'hello world!'}
<class 'dict'>
dumps:
df_dumps = json.dumps(df)
print(df_dumps)
print(type(df_dumps))
{"b": [1, 2, 3, 4], "a": "hello world!"} # JSON字符串为""双引号
<class 'str'>
loads:
df_loads = json.loads(df_dumps)
print(df_loads)
print(type(df_loads))
{'b': [1, 2, 3, 4], 'a': 'hello world!'}
<class 'dict'>
dump:
with open('df.json','w') as f:
# 可以使用这句话来转换数据与调整格式
# df = json.dumps(df,sort_keys=True,indent=4,separators=(',',': '))
json.dump(df,f)
print('使用dump 已将字典df转换为 str 保存到文件')
使用dump 已将字典df转换为 str 保存到文件
load:
with open('df.json','r') as f:
json_load = json.load(f)
print(json_load)
print(type(json_load))
{'b': [1, 2, 3, 4], 'a': 'hello world!'}
<class 'dict'>
列表list类似如下:
df = [1,2,3,4]
print(df)
print(type(df))
df_dumps = json.dumps(df)
print(df_dumps)
print(type(df_dumps))
df_loads = json.loads(df_dumps)
print(df_loads)
print(type(df_loads))
with open('df.json','w') as f:
json.dump(df,f)
print('使用dump 已将字典df转换为 str 保存到文件')
with open('df.json','r') as f:
json_load = json.load(f)
print(json_load)
print(type(json_load))
# 输出如下:
[1, 2, 3, 4]
<class 'list'>
[1, 2, 3, 4]
<class 'str'>
[1, 2, 3, 4]
<class 'list'>
使用dump 已将字典df转换为 str 保存到文件
[1, 2, 3, 4]
<class 'list'>
其实比较简单就是可能有点绕。
参考地址: