zl程序教程

您现在的位置是:首页 >  前端

当前栏目

json.dumps()、json.dump()、json.loads()和json.dumps()的区别

JSONJSON 区别 dump
2023-09-11 14:15:15 时间

json.dumps()、json.dump()、json.loads()和json.dumps()的区别

        json.dumps()用于将字典形式的数据转化为字符串

        json.loads()用于将字符串形式的数据转化为字典

简单理解:

1、json.dumps()和json.loads()是json格式处理函数(可以这么理解,json是字符串)
  (1)json.dumps()函数是将一个Python数据类型列表进行json格式的编码(可以这么理解,json.dumps()函数是将字典转化为字符串)
  (2)json.loads()函数是将json格式数据转换为字典(可以这么理解,json.loads()函数是将字符串转化为字典)

2、json.dump()和json.load()主要用来读写json文件函数

示例代码:

json.dumps()函数的使用,将字典转化为字符串

import json

dict1 = {'A': 'a', 'B': 'b'}
dict2 = {"A": "a", "B": "b"}
print(dict1)
print(dict2)  #  字典打印的效果为单引号
# json.dumps()函数的使用,将字典转化为字符串
json_str = json.dumps(dict1)
print(type(dict1))
print(type(json_str))
print(json_str)

运行结果:

{'A': 'a', 'B': 'b'}
{'A': 'a', 'B': 'b'}
<class 'dict'>
<class 'str'>
{"A": "a", "B": "b"}

注意:

当需要转换的字典中包含中文时,会出现乱码问题。

示例代码:

import json


dict1 = {"A": "a", "姓名": "张三 my name is zhangsan, age is 26"}
print(dict1)
# json.dumps()函数的使用,将字典转化为字符串
json_str = json.dumps(dict1)
print(type(dict1))
print(type(json_str))
print(json_str)

运行效果:

 原因:json.dumps 序列化时默认使用的ascii编码,想输出真正的中文需要指定ensure_ascii=False:更深入分析,是应为dJSON object 不是单纯的unicode实现,而是包含了混合的unicode编码以及已经用utf-8编码之后的字符串。

修改之前的代码:

import json


dict1 = {"A": "a", "姓名": "张三 my name is zhangsan, age is 26"}
print(dict1)
# json.dumps()函数的使用,将字典转化为字符串
json_str = json.dumps(dict1, ensure_ascii=False)
print(type(dict1))
print(type(json_str))
print(json_str)

运行效果:

json.loads函数的使用,将字符串转化为字典

import json

dict1 = {'A': 'a', 'B': 'b'}
# json.dumps()函数的使用,将字典转化为字符串
json_str = json.dumps(dict1)
# json.loads函数的使用,将字符串转化为字典
json_dict = json.loads(json_str)
print(type(json_str))
print(type(json_dict))
print(json_dict)

运行结果:

<class 'str'>
<class 'dict'>
{'A': 'a', 'B': 'b'}

如果直接将dict类型的数据写入json文件中会发生报错,因此在将数据写入时需要用到json.dump(),

json.load()用于从json文件中读取数据.

import json

dict1 = {'A': 'a', 'B': 'b'}
# json.dumps()函数的使用,将字典转化为字符串
json_str = json.dumps(dict1)
# json.dump()函数的使用,将json信息写进文件
# with open('json_str.json', 'a', encoding='utf-8') as f:
#     f.write(json_str)
file_w = open('json_str.json', 'w', encoding='utf-8')
json.dump(json_str, file_w)
file_w.close()
# json.load()函数的使用,将读取json信息
file_r = open('json_str.json', 'r', encoding='utf-8')
data = json.load(file_r)
print(data)

运行结果:

{"A": "a", "B": "b"}