Python Json序列化与反序列化
在python中,序列化可以理解为:把python的对象编码转换为json格式的字符串,反序列化可以理解为:把json格式字符串解码为python数据对象。在python的标准库中,专门提供了json库与pickle库来处理这部分。
json的dumps方法和loads方法,可实现数据的序列化和反序列化。具体来说,dumps方法,可将json格式数据序列为Python的相关的数据类型;loads方法则是相反,把python数据类型转换为json相应的数据类型格式要求。在序列化时,中文汉字总是被转换为unicode码,在dumps函数中添加参数ensure_ascii=False即可解决。
下面是json的序列化与反序列化:
1、Json序列化如下:
1 import json 2 print (json.__all__) #查看json库的所有方法 3 ['dump', 'dumps', 'load', 'loads', 'JSONDecoder', 'JSONEncoder']
未在dumps函数中添加参数ensure_ascii=False,结果如下:
1 #coding: utf-8 2 import json 3 4 dict = {'name':'zhangsan', 'age':33, 'address':'红星路'} 5 print('未序列化前的数据类型为:', type(dict)) 6 print('为序列化前的数据:', dict) 7 #对dict进行序列化的处理 8 dict_xu = json.dumps(dict) #直接进行序列化 9 print('序列化后的数据类型为:', type(dict_xu)) 10 print('序列化后的数据为:', dict_xu) 11 12 ---------------------------------------------------------------- 13 未序列化前的数据类型为: <class 'dict'> 14 为序列化前的数据: {'name': 'zhangsan', 'address': '红星路', 'age': 33} 15 序列化后的数据类型为: <class 'str'> 16 序列化后的数据为: {"name": "zhangsan", "address": "\u7ea2\u661f\u8def", "age": 33}
在dumps函数中添加参数ensure_ascii=False,结果如下:
1 #coding: utf-8 2 import json 3 4 dict = {'name':'zhangsan', 'age':33, 'address':'红星路'} 5 print('未序列化前的数据类型为:', type(dict)) 6 print('为序列化前的数据:', dict) 7 #对dict进行序列化的处理 8 dict_xu = json.dumps(dict,ensure_ascii=False) #添加ensure_ascii=False进行序列化 9 print('序列化后的数据类型为:', type(dict_xu)) 10 print('序列化后的数据为:', dict_xu) 11 ------------------------------------------------------------------- 12 未序列化前的数据类型为: <class 'dict'> 13 为序列化前的数据: {'address': '红星路', 'age': 33, 'name': 'zhangsan'} 14 序列化后的数据类型为: <class 'str'> 15 序列化后的数据为: {"address": "红星路", "age": 33, "name": "zhangsan"}
2、Json反序列化如下:
1 #coding: utf-8 2 import json 3 4 dict = {'name':'zhangsan', 'age':33, 'address':'红星路'} 5 print('未序列化前的数据类型为:', type(dict)) 6 print('为序列化前的数据:', dict) 7 #对dict进行序列化的处理 8 dict_xu = json.dumps(dict,ensure_ascii=False) #添加ensure_ascii=False进行序列化 9 print('序列化后的数据类型为:', type(dict_xu)) 10 print('序列化后的数据为:', dict_xu) 11 #对dict_xu进行反序列化处理 12 dict_fan = json.loads(dict_xu) 13 print('反序列化后的数据类型为:', type(dict_fan)) 14 print('反序列化后的数据为: ', dict_fan) 15 ---------------------------------------------------------------------- 16 未序列化前的数据类型为: <class 'dict'> 17 为序列化前的数据: {'name': 'zhangsan', 'age': 33, 'address': '红星路'} 18 序列化后的数据类型为: <class 'str'> 19 序列化后的数据为: {"name": "zhangsan", "age": 33, "address": "红星路"} 20 反序列化后的数据类型为: <class 'dict'> 21 反序列化后的数据为: {'name': 'zhangsan', 'age': 33, 'address': '红星路'}
在实际的工作中,序列化或者反序列化的可能是一个文件的形式,不可能像如上写的那样简单的,下来就来实现这部分,把文件内容进行序列化和反序列化,先来看序列化的代码,两步操作:1、先序列化 列表对象 ;2、步把序列化成的字符串写入文件:
1 #coding: utf-8 2 import json 3 4 list = ['Apple','Huawei','selenium','java','python'] 5 #把list先序列化,写入到一个文件中 6 # 两步操作 1步先序列化 列表对象 2步把序列化成的字符串写入文件 7 json.dump(list, open('e:/test.txt','w')) 8 r1=open('e:/test.txt','r') 9 print(r1.read()) 10 ------------------------------------------------------------------- 11 ["Apple", "Huawei", "selenium", "java", "python"]
反序列化,两步操作:1、先读取文件的字符串对象;2、然后反序列化成列表对象:
1 #coding: utf-8 2 import json 3 4 list = ['Apple','Huawei','selenium','java','python'] 5 #把list先序列化,写入到一个文件中 6 # 两步操作 1步先序列化 列表对象 2步把序列化成的字符串写入文件 7 json.dump(list, open('e:/test.txt','w')) 8 r1=open('e:/test.txt','r') 9 print(r1.read()) 10 #------------------------------------------------------------ 11 #两步操作:1、先读取文件的字符串对象;2、然后反序列化成列表对象 12 res=json.load(open('e:/test.txt','r')) 13 print (res) 14 print('数据类型:',type(res)) 15 ------------------------------------------------------------- 16 ["Apple", "Huawei", "selenium", "java", "python"] 17 ['Apple', 'Huawei', 'selenium', 'java', 'python'] 18 数据类型: <class 'list'>
转载于:https://www.cnblogs.com/diaosicai/p/6419833.html
Python Json序列化与反序列化相关推荐
- DotNet的JSON序列化与反序列化
JSON(JavaScript Object Notation)JavaScript对象表示法,它是一种基于文本,独立于语言的轻量级数据交换格式.在现在的通信中,较多的采用JSON数据格式,JSON有 ...
- JSON序列化和反序列化还有这种玩法
Mixin对于前端开发者可不陌生,Vue.React等知名前端框架都使用了Mixin.而对于后端开发,尤其是Java后端开发来说Mixin却是一个很陌生的概念.今天来我们通过Jackson让后端开发者 ...
- C#中JSON序列化和反序列化
有一段时间没有到博客园写技术博客了,不过每天逛逛博客园中大牛的博客还是有的,学无止境-- 最近在写些调用他人接口的程序,用到了大量的JSON.XML序列化和反序列化,今天就来总结下json的序列化和反 ...
- json 反序列化 父子类型_Jaskson精讲第7篇-类继承关系下的JSON序列化与反序列化JsonTypeInfo...
Jackson是Spring Boot(SpringBoot)默认的JSON数据处理框架,但是其并不依赖于任何的Spring 库.有的小伙伴以为Jackson只能在Spring框架内使用,其实不是的, ...
- Go进阶(7): JSON 序列化和反序列化
1. json序列化和反序列化基础 json数据的序列化和反序列化是一种非常常见的方式,尤其是在http/rcp的微服务调试中. 基础语法 在 Go 中我们主要使用官方的 encoding/json ...
- 序列化对象C++对象的JSON序列化与反序列化探索
新手发帖,很多方面都是刚入门,有错误的地方请大家见谅,欢迎批评指正 一:背景 作为一名C++开发人员,我始终很期待能够像C#与JAVA那样,可以省力的进行对象的序列化与反序列化,但到现在为止,还没有找 ...
- php和js序列化,PHP中serialize和json序列化与反序列化的区别
在PHP中,serialize和json两种方式对一个对象或数组进行序列化或反序列化有什么区别呢? 假设一个对象和一个数组: PHP 1 2 3 4$web=newstdClass; $web-> ...
- python3 中的Json序列化、反序列化 和 字符编码的问题解决
python3 中的Json序列化.反序列化 和 字符编码的问题解决 参考文章: (1)python3 中的Json序列化.反序列化 和 字符编码的问题解决 (2)https://www.cnblog ...
- C#之json序列化与反序列化
http://106.86.154.29:5191/jsdecoder.wasm http://106.86.154.29:5191/webgl.js http://106.86.154.29:519 ...
最新文章
- oracle引号的嵌套,3.4.2 在一个直接量字符串中嵌入单引号
- 用计算机绘制函数图象教案,信息技术应用 用计算机画函数图象教学设计(教案)...
- getter方法的作用 vuex_Vuex入门篇——基本使用
- Spreadsheet Tracking
- .NET Core开发的iNeuOS工业互联网平台,发布 iNeuDA 数据分析展示组件,快捷开发图形报表和数据大屏...
- xenserver6.2 内存leak故障处理
- torch tensor去掉1维_浑身是刺的“维c之王”,有人管它叫“菠萝”,有人管它叫“梨”...
- 搞懂多维高斯分布的由来
- ArrayList源码阅读
- MyEclipse的html页面 design视图中 关闭可视化界面
- C语言:从键盘输入一个正整数,将该数倒序输出。
- java sharepoint_java调用sharepoint webservice
- Dubbo中暴露服务的过程解析
- 云服务器与物理服务器有什么区别?
- Markdown 书写规范
- 分期利息计算——考虑免息日期和多利率设定的思路设计和代码实现
- ratingbar 的使用
- 计算机组成原理实验-logisim实现自动售糖机
- java基础之super关键字_繁星漫天_新浪博客
- 我在B站工作的30天时光,从入职到离职