Python中json.dumps()与json.loads()的核心用法及易错点解析
本文详细解析Python中json模块的四个核心函数:dumps、loads、dump与load。重点区分字符串与文件处理的差异,通过代码示例展示字典与JSON字符串的转换过程,并深入分析单双引号引发的JSONDecodeError报错及解决方案,提供实用的记忆技巧。
一、JSON介绍
JSON全称为JavaScript Object Notation(JavaScript对象表示法),是一种轻量级的数据交换格式,广泛应用于数据的存储与传输。作为一种语言无关的格式,它具有自描述性且易于理解。Python内置了json包以支持JSON数据处理。JSON数据由键值对组成,键与字符串值需用双引号包裹,整体结构由大括号{}界定。简而言之,JSON是接口间高效处理数据的模块,但其本身并非严格意义上的数据格式标准。
二、Python和Json数据类型的映射
| JSON | Python |
|---|---|
| object | dict |
| array | list |
| string | str |
| number | int |
| true | True |
| false | False |
| null | None |
三、json.load(s)与json.dump(s)区别
json.load:用于读取JSON文件,返回对应的Python对象。
json.dump:用于将数据写入JSON格式的文件,无返回值。
json.dumps:将Python中的字典类型转换为JSON字符串类型,返回JSON字符串 [dict→str]。
json.loads:将JSON字符串转换为Python字典类型,返回Python对象 [str→dict]。
load和dump主要处理的是文件操作。
loads和dumps主要处理的是字符串操作。

json.load():从JSON文件中读取数据并转换为Python对象。
json.loads():将字符串类型的数据转换为字典类型。
json.dumps():将字典类型的数据转换为字符串格式。
json.dump():将数据以JSON格式写入文件中。

四、测试
4.1 json.dumps()
import json
data = {
'fruit':'apple',
'vegetable':'cabbage'
}
print(data,type(data))
data = json.dumps(data) # dict转json
print(data,type(data))
返回:
{'fruit': 'apple', 'vegetable': 'cabbage'} <class 'dict'> {"fruit": "apple", "vegetable": "cabbage"} <class 'str'>
4.2 json.loads()
data = """{
"fruit": "apple",
"vegetable": "cabbage"
}"""
# 一般此时data为request.text返回值
print(data, type(data))
data = json.loads(data)
print(data, type(data))
返回:
{ "fruit": "apple", "vegetable": "cabbage" } <class 'str'> {'fruit': 'apple', 'vegetable': 'cabbage'} <class 'dict'>
4.3 json.dump()
1.写str
a.py中:
data = "wyt"
with open('b.json', 'w') as f:
json.dump(data, f)
with open('b.json','r',encoding='utf-8') as f :
f_str = json.load(f)
print(f_str,type(f_str))
返回:
wyt <class 'str'>
2.写dict
a.py中:
data = {
'fruit':'apple',
'vegetable':'cabbage'
}
with open('b.json', 'w') as f:
json.dump(data, f)
with open('b.json','r',encoding='utf-8') as f :
f_str = json.load(f)
print(f_str,type(f_str))
返回:
{'fruit': 'apple', 'vegetable': 'cabbage'} <class 'dict'>
4.4 json.load()
a.json中存在:
{
"fruit": "apple",
"vegetable": "cabbage"
}
a.py中:
with open('a.json','r',encoding='utf-8') as f :
f_str = json.load(f)
print(f_str,type(f_str))
返回:
{'fruit': 'apple', 'vegetable': 'cabbage'} <class 'dict'>
五、报错分析
5.1 本地代码
data = '''{
'fruit':'apple',
'vegetable':'cabbage'
}'''
data = json.loads(data)
5.2 报错返回

json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes: line 2 column 1 (char 2)
5.3 报错分析与解决
JSON标准要求使用双引号。
data = """{
"fruit": "apple",
"vegetable": "cabbage"
}"""
data = json.loads(data)
print(data, type(data))
返回:
{'fruit': 'apple', 'vegetable': 'cabbage'} <class 'dict'>
补充:关于json.dumps(dict)和json.loads(str)函数总是记反,所以想了一个记忆方法。
首先我们先来看json.dumps(dict)函数,是指将dict,也就是字典类型的数据结构转换为json数据格式,也就是字符串。
下面举例说明:
import json
dict1={
"usr":"admin",
"pdw":"123456",
}
print("****************使用json.dumps函数之前的dict1和使用函数后的类型*****************")
print(dict1)
print('dict1的数据类型是:',type(dict1))
json1=json.dumps(dict1)
print('使用json.dumps函数后的json1的输出如下')
print(json1)
print('使用json.dumps函数后的类型是',type(json1))代码的运行结果

接下来我们再看json.loads(str)是将json格式转化为dict也就是字典格式。
话不多说,上例子,接上面代码而写的
print("****************使用json.loads函数之前的str1和使用函数后的类型*****************")
dict2=json.loads(json1)
print(dict2)
print(type(dict2))
代码运行结果

通过例子我们已经知道了json.dumps()的来龙去脉,那么如果快速的记住呢,以前我总是把json.dumps()和json.loads()记反了,突然间找到了一个巧记的方法,那就是json.dumps(dict)是把字典格式的转换成json格式,也就括号里是字典,最后返回的是json,而函数名是dumps,可以注意到,dumps的首字母和字典dict的首字母都是d所以这样就可以记住dumps是将dict转换成json格式,那另一个loads也就是反之,将json转换成字典格式。
总结
到此这篇关于python中json.dumps()和json.loads()用法的文章就介绍到这了,更多相关python json.dumps() json.loads()用法内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













