「python」Json
Json
序列化(Serialization):将对象的状态信息转换为可以存储或可以通过网络传输的过程,传输的格式可以是JSON、XML等。我们把变量从内存中变成可存储或传输的过程称之为序列化
反序列化:从存储区域(JSON,XML)读取反序列化对象的状态,重新创建该对象。变量内容从序列化的对象重新读到内存里称之为反序列化
Json
json是什么呢?
是一种轻量级的数据交换格式。
完全独立于编程语言的文本格式来存储和表示数据。
简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,易于机器解析和生成,并有效地提升网络传输效率。
常用有2个方法,也是最基本的使用方法:
1、dumps:把字典转成json字符串
2、loads:把json字符串转成字典
import json test_dict = {'a':1, 'b':2} print(type(test_dict)) #把字典转成json字符串 json_text = json.dumps(test_dict) print(json_text) print(type(json_text)) #把json字符串转成字典 json_dict = json.loads(json_text) print(json_dict) print(type(json_dict))
输出结果为:
<class 'dict'> {"a": 1, "b": 2} <class 'str'> {'a': 1, 'b': 2} <class 'dict'>
还有有2个方法读写json文件的方法,与上述方法相比都少了s
1、dump:
2、load:
- 把字典转成json字符串,并保存到文件中
import json import codecs test_dict = {'a':1, 'b':2} #把字典转成json字符串 json_text = json.dumps(test_dict) #把json字符串保存到文件 #因为可能json有unicode编码,最好用codecs保存utf-8文件 with codecs.open('1.json', 'w', 'utf-8') as f: f.write(json_text)
- 从json文件中读取到字典中
import json import codecs #从文件中读取内容 with codecs.open('1.json', 'r', 'utf-8') as f: json_text = f.read() #把字符串转成字典 json_dict = json.loads(json_text)
上面代码,我们也可以用load和dump修改。
- dump把字典转成json字符串并写入到文件
import json import codec test_dict = {'a':1, 'b':2} #把字典转成json字符串并写入到文件 with codecs.open('1.json', 'w', 'utf-8') as f: json.dump(test_dict, f)
- load从json文件读取json字符串到字典
#coding:utf-8 import json import codecs #从json文件读取json字符串到字典 with codecs.open('1.json', 'r', 'utf-8') as f: json_dict = json.load(f)
相关参数
- json.dumps 相关参数:
(1)sort_keys是告诉编码器按照字典排序(a到z)输出。
(2)indent参数根据数据格式缩进显示,读起来更加清晰
(3)separators参数的作用是去掉,,:后面的空格,从上面的输出结果都能看到”, :”后面都有个空格,这都是为了美化输出结果的作用,但是在我们传输数据的过程中,越精简越好,冗余的东西全部去掉,因
此就可以加上.
(4)skipkeys参数,在encoding过程中,dict对象的key只可以是string对象,如果是其他类型,那么在编码过程中就会抛出ValueError的异常。skipkeys可以跳过那些非string对象当作key的处理.
(5)输出真正的中文需要指定ensure_ascii=False
参考:廖雪峰python
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
一个正则表达式酿成的惨案…
前几天线上一个项目监控信息突然报告异常,上到机器上后查看相关资源的使用情况,发现 CPU 利用率将近 100%。通过 Java 自带的线程 Dump 工具,我们导出了出问题的堆栈信息。 我们可以看到所有的堆栈都指向了一个名为 validateUrl 的方法,这样的报错信息在堆栈中一共超过 100 处。通过排查代码,我们知道这个方法的主要功能是校验 URL 是否合法。 很奇怪,一个正则表达式怎么会导致 CPU 利用率居高不下。为了弄清楚复现问题,我们将其中的关键代码摘抄出来,做了个简单的单元测试。 当我们运行上面这个例子的时候,通过资源监视器可以看到有一个名为 java 的进程 CPU 利用率直接飙升到了 91.4% 。 看到这里,我们基本可以推断,这个正则表达式就是导致 CPU 利用率居高不下的凶手! 于是,我们将排错的重点放在了那个正则表达式上: ^([hH][tT]{2}[pP]://|[hH][tT]{2}[pP][sS]://)(([A-Za-z0-9-~]+).)+([A-Za-z0-9-~\\/])+$ 这个正则表达式看起来没什么问题,可以分为三个部分: 第一部分匹配 ht...
- 下一篇
[雪峰磁针石博客]python库介绍-collections:高性能容器数据类型
简介 2.4新增 源代码:Lib/collections.py and Lib/_abcoll.py 提供了替换dict, list, set和tuple的数据类型。 主要类型如下: namedtuple(): 命名元组,创建有名字域的元组子类的工厂函数。python 2.6新增。 deque:双端队列,类似于列表,两端进栈和出栈都比较快速。python 2.4新增。 Counter:字典的子类,用于统计哈希对象。python 2.7新增。 OrderedDict:有序字典,字典的子类,记录了添加顺序。python 2.7新增。 defaultdict:dict的子类,调用一个工厂函数支持不存在的值。python 2.5新增。 还提供了抽象基类,用来测试类是否提供了特殊接口,不管是哈希或者映射。 Counter 计数器(Counter)是一个容器,用来跟踪值出现了多少次。和其他语言中的bag或multiset类似。 计数器支持三种形式的初始化。构造函数可以调用序列,包含key和计数的字典,或使用关键字参数。 import collections print(collections.Co...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Windows10,CentOS7,CentOS8安装Nodejs环境
- CentOS8安装Docker,最新的服务器搭配容器使用
- CentOS8编译安装MySQL8.0.19
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS6,7,8上安装Nginx,支持https2.0的开启