博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python中json.dumps()和json.dump() 以及 json.loads()和json.load()的区分
阅读量:2393 次
发布时间:2019-05-10

本文共 2426 字,大约阅读时间需要 8 分钟。

背景知识:str()& repr()函数的区别

字符串序列化与反序列化区别:


  • 在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 jsondata = {    'id': 1,    'name': 'test1',    'age': '1'}json_str1 = json.dumps(data)print(type(json_str1), '\t', repr(json_str1))
'{"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))

最终结果:

数据类型: 
[{'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 jsondata1 = '''[{    "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']:  test1data2['name']:  test2

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


**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-8import jsonlist = ['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-8import jsonlist = ['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']

转载地址:http://uoeab.baihongyu.com/

你可能感兴趣的文章
java中File类的判断功能
查看>>
java中File类的获取功能和修改名字功能
查看>>
java中File类的其它获取功能
查看>>
java输出指定目录下所有的java文件名(包含子目录)
查看>>
java中的字符流
查看>>
java中的字节流
查看>>
java中IO流中的标准输入输出流
查看>>
java中IO流中的转换流
查看>>
java中IO流中的 打印流
查看>>
java中IO流中的对象操作流
查看>>
java中IO流中的对象操作流(2)——解决对象输入流读取对象出现异常的问题
查看>>
java中IO流Properties集合
查看>>
java中的常用编码表
查看>>
java中IO流字符流中的编码
查看>>
java中多线程概述
查看>>
java中兩種实现线程的方式
查看>>
java中多线程安全问题产生&解决方案——同步代码块
查看>>
ServletContextListener监听器,HttpSession监听器,ServletRequestListener监听器的使用
查看>>
Filter过滤器的使用
查看>>
文件上传的概述
查看>>