python中json.dumps()和json.dump() 以及 json.loads()和json.load()的区分
Posted 开飞机的苏克_Sucre
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python中json.dumps()和json.dump() 以及 json.loads()和json.load()的区分相关的知识,希望对你有一定的参考价值。
在python中,序列化可以理解为:把python的对象编码转换为json格式的字符串,反序列化可以理解为:把json格式字符串解码为python数据对象。在python的标准库中,专门提供了json库与pickle库来处理这部分。
json的dumps方法和loads方法,可实现数据的序列化和反序列化。具体来说,dumps方法,可将json格式数据序列为Python的相关的数据类型;loads方法则是相反,把python数据类型转换为json相应的数据类型格式要求。在序列化时,中文汉字总是被转换为unicode码,在dumps函数中添加参数ensure_ascii=False即可解决
1.json.dumps()和json.loads()是json格式处理函数
json.dumps()----将Python的字典数据转换成json字符,数据的最外面都添加一层""变为字符串,这也是数据的序列化步骤
(1)情况一
import json data = { \'id\': 1, \'name\': \'test1\', \'age\': \'1\' } json_str1 = json.dumps(data) print(type(json_str1), \'\\t\', repr(json_str1))
<class \'str\'> \'{"id": 1, "name": "test1", "age": "1"}\'
(2)情况二:
-
import json # python列表(字典)类型转换为json字符串 data1 = [{ "id": 1, "name": "test1", "age": "1" }, { "id": 2, "name": "test2", "age": "2" }] json_str1 = json.dumps(data1) //转化为json字符串 print("数据类型:", type(data1), repr(data1)) print("json字符串:", repr(json_str1))
最终结果:
-
数据类型: <class \'list\'> [{\'id\': 1, \'name\': \'test1\', \'age\': \'1\'}, {\'id\': 2, \'name\': \'test2\', \'age\': \'2\'}] json字符串: \'[{"id": 1, "name": "test1", "age": "1"}, {"id": 2, "name": "test2", "age": "2"}]\'
- json.loads()----将json字符串数据转换为字典或列表(去掉外面一层""),这个也是反序列化的步骤。
import json data1 = \'\'\'[{ "id": 1, "name": "test1", "age": "1" }, { "id": 2, "name": "test2", "age": "2" }]\'\'\' # # 将json字符串转换为python列表 data2 = json.loads(data1) print("data2[\'name\']: ", data2[0]["name"]) print("data2[\'name\']: ", data2[1]["name"])
最终结果
-
data2[\'name\']: test1 data2[\'name\']: test2
ps://json.loads()里面必须是字符串,如果是列表会报错
-
**TypeError: the JSON object must be str, bytes or bytearray, not \'list\'**
2.读取excel时候常见的坑
####(1)excel里面,如果保存的字典如下面所示:
{‘name’:‘alien’ , ‘age’:18}
如上的字典,从excel读取完之后,是不能转换成字典dict的
花括号里面需要使用双引号“”,然后再使用json.loads(目标数据),这样才能转化成字典类型,否者不行3.json.dump()和json.load()主要用来读写json文件函数
(1)json.dump()是写入文件
# coding: utf-8 import json list = [\'Apple\', \'Huawei\', \'selenium\', \'java\', \'python\'] # 写入文件,alien.txt文件最初是空白文件 with open(\'/Users/test/Python_AutoTest/utilts/alien.txt\', \'w\') as f: json.dump(list, f) # 读取文件 with open(\'/Users/test/Python_AutoTest/utilts/alien.txt\', \'r\') as f: print(f.read())
最终结果
-
["Apple", "Huawei", "selenium", "java", "python"]
####(2)json.load()读取文件信息
-
# coding: utf-8 import json list = [\'Apple\', \'Huawei\', \'selenium\', \'java\', \'python\'] # 读取文件 with open(\'/Users/test/Python_AutoTest/utilts/alien.txt\', \'r\') as f: result = json.load(f) print(result)
最终结果
-
[\'Apple\', \'Huawei\', \'selenium\', \'java\', \'python\']
以上是关于python中json.dumps()和json.dump() 以及 json.loads()和json.load()的区分的主要内容,如果未能解决你的问题,请参考以下文章
python中json.dump() 和 json.dumps() 有那些区别?
python中json.dumps()和json.dump() 以及 json.loads()和json.load()的区分
JSON.stringify (Javascript) 和 json.dumps (Python) 在列表中不等效?
Python中json文件处理的四个函数json.dumps()json.loads()json.dump()和json.load()的区分
python中json文件处理涉及的四个函数json.dumps()和json.loads()json.dump()和json.load()的区分
python中json文件处理涉及的四个函数json.dumps()和json.loads()json.dump()和json.load()的区分