当前位置:   article > 正文

python中json.dumps()和json.dump() 以及 json.loads()和json.load()的区分_json.dump()什么意思

json.dump()什么意思

背景知识:

  • 在python中,序列化可以理解为:把python的对象编码转换为json格式的字符串。类型是字符串,数据内核是json,使用dumps()方法实现。
  • 反序列化可以理解为:把json格式字符串解码为python数据对象。在python的标准库中,专门提供了json库与pickle库来处理这部分。类型是dict()或list(),使用loads()方法实现。
  • 在序列化时,中文汉字总是被转换为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))
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
<class 'str'> 	 '{"id": 1, "name": "test1", "age": "1"}'
  • 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))
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

最终结果:

数据类型: <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"}]'
  • 1
  • 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"])
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

最终结果:

data2['name']:  test1
data2['name']:  test2
  • 1
  • 2



ps://json.loads()里面必须是字符串,如果是列表会报错

**TypeError: the JSON object must be str, bytes or bytearray, not 'list'**
  • 1



2.读取excel时候常见的坑

(1)excel里面,如果保存的字典如下面所示:
{'name':'alien' , 'age':18}
  • 1

如上的字典,从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())
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

最终结果

["Apple", "Huawei", "selenium", "java", "python"]
  • 1


(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)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

最终结果:

['Apple', 'Huawei', 'selenium', 'java', 'python']
  • 1



知识来源:

1.str()& repr()函数的区别
2.字符串序列化与反序列化区别

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/382148
推荐阅读
相关标签
  

闽ICP备14008679号