一、JSON介绍
JSON代表JavaScript对象符号。它是一种轻量级的数据交换格式,用于存储和交换数据。它是一种独立于语言的格式,非常容易理解,因为它本质上是自描述的。 python中有一个内置包,它支持JSON数据,称为json。 JSON中的数据表示为quoted-strings,由大括号{}之间的键值映射组成。通俗来说就是一种在接口中易于使用的数据处理模块,但是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:表示读取文件,返回python对象
json.dump:表示写入文件,文件为json字符串格式,无返回
json.dumps:将python中的字典类型转换为字符串类型,返回json字符串 [dict→str]
json.loads:将json字符串转换为字典类型,返回python对象 [str→dict]
load和dump处理的主要是 文件
loads和dumps处理的是 字符串
json.load()从json文件中读取数据
json.loads()将str类型的数据转换为dict类型
json.dumps()将dict类型的数据转成str
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'}
{"fruit": "apple", "vegetable": "cabbage"}
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"
}
{'fruit': 'apple', 'vegetable': 'cabbage'}
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
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'}
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'}
五、报错分析
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'}
补充:关于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()用法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!