python 3 json 序列化

我们学习过用eval内置方法可以将一个字符串转成python对象,不过,eval方法是有局限性的,对于普通的数据类型,json.loads和eval都能用,但遇到特殊类型的时候,eval就不管用了,所以eval的重点还是通常用来执行一个字符串表达式,并返回表达式的值。

什么是序列化?

我们把对象(变量)从内存中变成可存储或传输的过程称之为序列化,在Python中叫pickling,在其他语言中也被称之为serialization,marshalling,flattening等等,都是一个意思。

JSON(Java Script Object Notation):一种轻量级数据交互格式,相对于XML而言更简单,也易于阅读和编写,机器也方便解析和生成,Json是JavaScript中的一个子集。

序列化之后,不仅可以把序列化后的内容写入磁盘,还可以通过网络传输到别的机器上,如果收发的双方约定好实用一种序列化的格式,那么便打破了平台/语言差异化带来的限制,实现了跨平台数据交互。

反过来,把变量内容从序列化的对象重新读到内存里称之为反序列化,即unpickling。

JSON表示的对象就是标准的JavaScript语言的对象,JSON和Python内置的数据类型对应如下:

序列化就是把数据写入到硬盘的文件上,用json的dumps

反序列化就是把序列化存到硬盘的文件内容再加载回来,用json的loads

import json
dic={'name':'egon','age':18}
print(json.dumps(dic))        # json 格式的字典
print(type(json.dumps(dic)))  #<class 'str'>

序列化

import json
dic={'name':'egon','age':18}
with open('a.json','w') as f:  # 往文件中写入json文件
    f.write(json.dumps(dic))a.json 文件内容 : {"name": "egon", "age": 18}

反序列化

import jsonwith open('a.json','r') as f:  # 读取json文件
data=f.read()dic=json.loads(data)print(dic['name'])

import jsondic={'name':'egon','age':18}json.dump(dic,open('b.json','w')) #简写方式序列化print(json.load(open('b.json','r'))['name']) #简写方式反序列化

import json#dct="{'1':111}"#json 不认单引号#dct=str({"1":111})#报错,因为生成的数据还是单引号:{'one': 1}
dct='{"1":"111"}'print(json.loads(dct))#conclusion:#        无论数据是怎样创建的,只要满足json格式,就可以json.loads出来,不一定非要dumps的数据才能loads

注意点

转载于:https://www.cnblogs.com/qiangyuge/p/7360655.html

python 3 json 序列化相关推荐

  1. 黑马程序员python笔记_#华为云·寻找黑马程序员# 如何实现一个优雅的Python的Json序列化库...

    [小宅按]在Python的世界里,将一个对象以json格式进行序列化或反序列化一直是一个问题.Python标准库里面提供了json序列化的工具,我们可以简单的用json.dumps来将一个对象序列化. ...

  2. #华为云·寻找黑马程序员# 如何实现一个优雅的Python的Json序列化库

    在Python的世界里,将一个对象以json格式进行序列化或反序列化一直是一个问题.Python标准库里面提供了json序列化的工具,我们可以简单的用json.dumps来将一个对象序列化.但是这种序 ...

  3. python使用json序列化datetime类型问题处理

    使用python的json模块序列化时间或者其他不支持的类型时会抛异常,例如下面的代码: # -*- coding: cp936 -*- from datetime import datetimeim ...

  4. Python使用JSON序列化从入门到精通

    JSON(JavaScript Object Notation)是一个轻量级的数据交换格式,Python标准库json完美实现了该格式,用法类似于marshal和pickle. >>> ...

  5. python之json序列化与反序列化

    文章目录 序列化就是将python中的字典转换为一种特殊的字符串(json) 那么反序列化就是,将json字符串转换为python字典 想输出真正的中文需要指定ensure_ascii=False,, ...

  6. Python 之 JSON序列化(我不得不说JSON让世界更加美好了)

    文章目录 1.相遇 2.简介 3.序列化和反序列化 1)序列化 2)反序列化 4.使用json深度拷贝 1)第一次尝试 2)第二次尝试 3)第三次尝试,成功! 5.总结 对于开发出JSON的大佬 ,让 ...

  7. python 序列化压缩成字符串_Python 将json序列化后的字符串转换成字典(推荐)

    一般而言下面的就可以完成需求了. def convertToDic(data): jsonDic=json.loads(data) return dict(jsonDic) 但实际应用中可能会出现一些 ...

  8. 解决Python自带的json序列化工具不能序列化datetime类型数据问题

    解决Python自带的json序列化工具不能序列化datetime类型数据问题 参考文章: (1)解决Python自带的json序列化工具不能序列化datetime类型数据问题 (2)https:// ...

  9. python中常用的序列化模块_第六章 常用模块(5):python常用模块(序列化模块:pickle,json,shelve,xml)...

    6.3.7 序列化模块 (pickle,json,shelve,xml) 文件写入,数据传输时,我们都是以字符串形式写入的(因为字符串可以encode成bytes). 那其他类型(比如字典,列表等)想 ...

最新文章

  1. java线程wait_java多线程学习(四) 之 wait和notify
  2. 实验4.1 循环控制 一
  3. 2016年第七届蓝桥杯C/C++ A组国赛 —— 第一题:随意组合
  4. eclipse源服务器未能找到,eclipse - HTTP状态[404]? [未找到](原始服务器未找到当前表示) - 堆栈内存溢出...
  5. orm对象关系映射演练 一行就是一个对象
  6. 计算机的数学发展史论文,数学简史论文范文
  7. 类成员的访问修饰符和可访问性
  8. videojs默认显示controls 按钮功能失效_一文看懂Yearning SQL审核平台功能模块设计...
  9. 年度重磅!2020年度中国计算机视觉人才调研报告正式发布
  10. fas怎么翻译成lisp_fas文件格式研究
  11. C# 第五章『面向对象』◆第9节:抽象类和密封类
  12. 使用selenium模拟登陆163邮箱
  13. 云解析 dns 服务器,你知道为什么云解析DNS又快又安全吗?
  14. 雨课堂《工程伦理》期末答案
  15. php抓取快照,PHP抓屏函数实现屏幕快照代码分享
  16. 计算机地图制图期末考试题,计算机地图制图原理思考题.doc
  17. 刘顺琦 - CSCI 561 mid 1definition
  18. 实时时钟(Real_Time Clock)电路--中微爱芯
  19. 这平安夜,我们来用python演奏一首铃儿响叮当吧
  20. bps、pps、fps

热门文章

  1. 联系实际谈谈管理者的沟通协调能力建设
  2. 等级考试(一):三级网络---似曾相识
  3. 北京发布人工智能产业政策,该如何高效关注行业动态、把握新机遇?
  4. 央视牵手搜狗,AI合成主播为3·15晚会预热
  5. 人人能上手:OpenAI发射初学者友好的强化学习教程 | 代码简约易懂
  6. Google正在失去DeepMind?
  7. SQFREE - Square-free integers
  8. 在TensorFlow中实现文本分类的卷积神经网络
  9. ceph(7)--Ceph 的基本操作和常见故障排除方法
  10. Windows Redis3 安装