Python使用JSON序列化从入门到精通
JSON(JavaScript Object Notation)是一个轻量级的数据交换格式,Python标准库json完美实现了该格式,用法类似于marshal和pickle。
>>> import json
# 序列化列表对象
# 直接查看序列化后的结果
>>> json.dumps(['a','b','c'])
'["a", "b", "c"]'
# 反序列化
>>> json.loads(_)
['a', 'b', 'c']
# 序列化字典对象
>>> json.dumps({'a':1, 'b':2, 'c':3})
'{"a": 1, "b": 2, "c": 3}'
>>> json.loads(_)
{'a': 1, 'b': 2, 'c': 3}
>>> json.dumps([1,2,3,{'4': 5, '6': 7}])
'[1, 2, 3, {"4": 5, "6": 7}]'
# 指定分隔符,可以压缩存储,注意和上面结果的区别
>>> json.dumps([1,2,3,{'4':5, '6':7}], separators=(',', ':'))
'[1,2,3,{"4":5,"6":7}]'
>>> json.loads(_)
[1, 2, 3, {'4': 5, '6': 7}]
# 序列化中文字符串
>>> json.dumps('山东烟台')
'"\\u5c71\\u4e1c\\u70df\\u53f0"'
>>> json.loads(_)
'山东烟台'
# 无法直接序列化集合对象
>>> json.dumps({1,2,3,4})
Traceback (most recent call last):
File "<pyshell#49>", line 1, in <module>
json.dumps({1,2,3,4})
File "C:\Python36\lib\json\__init__.py", line 231, in dumps
return _default_encoder.encode(obj)
File "C:\Python36\lib\json\encoder.py", line 199, in encode
chunks = self.iterencode(o, _one_shot=True)
File "C:\Python36\lib\json\encoder.py", line 257, in iterencode
return _iterencode(o, 0)
File "C:\Python36\lib\json\encoder.py", line 180, in default
o.__class__.__name__)
TypeError: Object of type 'set' is not JSON serializable
# 自定义序列化编码器
>>> class setEncoder(json.JSONEncoder):
def default(self, obj):
if isinstance(obj, set):
return list(obj)
return json.JSONEncoder.default(self, obj)
# 自定义反序列化解码器
>>> class setDecoder(json.JSONDecoder):
def decode(self, obj):
return set(json.JSONDecoder.decode(self, obj))
# 使用自定义的编码器和解码器
>>> json.dumps({1,2,3,4}, cls=setEncoder)
'[1, 2, 3, 4]'
>>> json.loads(_, cls=setDecoder)
{1, 2, 3, 4}
>>> s = '''董付国,系列图书:
《Python程序设计基础》、
《Python程序设计》(第2版)、
《Python可以这样学》
清华大学出版社'''
# 将内容序列化并写入文本文件
>>> with open('test.txt', 'w') as fp:
json.dump(s, fp)
# 读取文件内容并反序列化
>>> with open('test.txt') as fp:
print(json.load(fp))
董付国,系列图书:
《Python程序设计基础》、
《Python程序设计》(第2版)、
《Python可以这样学》
清华大学出版社
Python使用JSON序列化从入门到精通相关推荐
- python数据分析可视化实例-Python数据分析与可视化从入门到精通
(1)没有高深理论,每章都以实例为主,读者参考书中源码运行,就能得到与书中一样的结果.(2)专注于Python数据分析与可视化操作中实际用到的技术.相比大而全的书籍资料,本书能让读者尽快上手,开始项目 ...
- python可视化数据分析-Python数据分析与可视化从入门到精通
(1)没有高深理论,每章都以实例为主,读者参考书中源码运行,就能得到与书中一样的结果.(2)专注于Python数据分析与可视化操作中实际用到的技术.相比大而全的书籍资料,本书能让读者尽快上手,开始项目 ...
- python 3 json 序列化
python 3 json 序列化 我们学习过用eval内置方法可以将一个字符串转成python对象,不过,eval方法是有局限性的,对于普通的数据类型,json.loads和eval都能用,但遇到特 ...
- 送书 | 新书《Python量化金融编程从入门到精通》
又到了每周三的送书时刻啦!今天给大家带来的是<Python量化金融编程从入门到精通>! (文末查看送书规则) 查看全文 http://www.taodudu.cc/news/s ...
- python学精通要多久-学Python编程难吗 从入门到精通学习Python要多久
对于很多新手而讲,学Python无疑是一件非常令人头痛的事情,不知道无从下手,大家经常会问:象这样没有一点基础学Python,大概要多久才能学会学精?很多初学者都有这样的疑问,Python需要多长时间 ...
- 黑马程序员python笔记_#华为云·寻找黑马程序员# 如何实现一个优雅的Python的Json序列化库...
[小宅按]在Python的世界里,将一个对象以json格式进行序列化或反序列化一直是一个问题.Python标准库里面提供了json序列化的工具,我们可以简单的用json.dumps来将一个对象序列化. ...
- python网络爬虫开发从入门到精通_Python突击-从入门到精通到项目实战
原标题:Python突击-从入门到精通到项目实战 python语言近年来越来越被程序相关人员喜欢和使用,因为其不仅简单容易学习和掌握,而且还有丰富的第三方程序库和相应完善的管理工具:从命令行脚本程序到 ...
- #华为云·寻找黑马程序员# 如何实现一个优雅的Python的Json序列化库
在Python的世界里,将一个对象以json格式进行序列化或反序列化一直是一个问题.Python标准库里面提供了json序列化的工具,我们可以简单的用json.dumps来将一个对象序列化.但是这种序 ...
- python使用json序列化datetime类型问题处理
使用python的json模块序列化时间或者其他不支持的类型时会抛异常,例如下面的代码: # -*- coding: cp936 -*- from datetime import datetimeim ...
最新文章
- 列表逆向排列的几种实现形式
- 前端学习(1942)vue之电商管理系统电商系统之创建商品分类的分支
- 联想g510升级方案_联想智慧中国行,聚焦第一古城,助力企业智能升级
- java sleep唤醒_JAVA wait(), notify(),sleep详解(转)
- 什么是掼蛋游戏呼叫中心
- 高并发处理方案_高并发系统下的缓存解决方案
- appcrash事件怎么解决_突发事件中身心容易紧张焦虑,该如何控制心理压力与情绪?...
- 大数据:技术与应用实践指南
- iOS打包后收不到推送信息
- Python中的split()函数的使用方法
- 官方jdk历史版本的下载方式
- Linux 下查看局域网内所有主机IP和MAC
- ioswifi信号测试软件app,App Store 上的“Speedtest - 网络测速测量和wifi分析仪”...
- kdj买卖指标公式源码_通达信买卖KDJ副图指标公式
- 统计每个日期新用户的次日留存率
- 学习记录540@SVN查看日志报错:Item is not readable
- 抖音小店无货源,如何找到适合自己店铺的达人,精选联盟玩法分享
- Cloud一分钟 |互联网之冬;华为停招,BAT裁员;苹果下线拼多多应用;意媒谈DG风波:中国人记性差...
- python:命令行与环境
- R语言神经网络量化交易模型
热门文章
- java 内存指针_java内存模型详解
- es6 去掉空格_es6 filter() 数组过滤方法总结
- python中的映射_一文读懂Python中的映射
- 显卡花屏显存测试软件6,显卡花屏诊断好帮手:Video Memory Stress Test
- 删除用户账号的命令 mysql_【Mysql】常用指令之——用户操作(创建,授权,修改,删除)...
- xp无法使用计算机管理员权限,xp无法无法使用管理员权限运行软件的解决步骤...
- oracle表ddl,七、Oracle中DDL改变表结构操作
- Linux 切mms数据流,libmms MMSH Server响应解析缓冲区溢出漏洞
- Spring和Quartz配合实现定时任务
- python好用的内置库_第42p,time库,Python中优秀的内置库