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序列化从入门到精通相关推荐

  1. python数据分析可视化实例-Python数据分析与可视化从入门到精通

    (1)没有高深理论,每章都以实例为主,读者参考书中源码运行,就能得到与书中一样的结果.(2)专注于Python数据分析与可视化操作中实际用到的技术.相比大而全的书籍资料,本书能让读者尽快上手,开始项目 ...

  2. python可视化数据分析-Python数据分析与可视化从入门到精通

    (1)没有高深理论,每章都以实例为主,读者参考书中源码运行,就能得到与书中一样的结果.(2)专注于Python数据分析与可视化操作中实际用到的技术.相比大而全的书籍资料,本书能让读者尽快上手,开始项目 ...

  3. python 3 json 序列化

    python 3 json 序列化 我们学习过用eval内置方法可以将一个字符串转成python对象,不过,eval方法是有局限性的,对于普通的数据类型,json.loads和eval都能用,但遇到特 ...

  4. 送书 | 新书《Python量化金融编程从入门到精通》

    又到了每周三的送书时刻啦!今天给大家带来的是<Python量化金融编程从入门到精通>!       (文末查看送书规则) 查看全文 http://www.taodudu.cc/news/s ...

  5. python学精通要多久-学Python编程难吗 从入门到精通学习Python要多久

    对于很多新手而讲,学Python无疑是一件非常令人头痛的事情,不知道无从下手,大家经常会问:象这样没有一点基础学Python,大概要多久才能学会学精?很多初学者都有这样的疑问,Python需要多长时间 ...

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

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

  7. python网络爬虫开发从入门到精通_Python突击-从入门到精通到项目实战

    原标题:Python突击-从入门到精通到项目实战 python语言近年来越来越被程序相关人员喜欢和使用,因为其不仅简单容易学习和掌握,而且还有丰富的第三方程序库和相应完善的管理工具:从命令行脚本程序到 ...

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

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

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

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

最新文章

  1. 列表逆向排列的几种实现形式
  2. 前端学习(1942)vue之电商管理系统电商系统之创建商品分类的分支
  3. 联想g510升级方案_联想智慧中国行,聚焦第一古城,助力企业智能升级
  4. java sleep唤醒_JAVA wait(), notify(),sleep详解(转)
  5. 什么是掼蛋游戏呼叫中心
  6. 高并发处理方案_高并发系统下的缓存解决方案
  7. appcrash事件怎么解决_突发事件中身心容易紧张焦虑,该如何控制心理压力与情绪?...
  8. 大数据:技术与应用实践指南
  9. iOS打包后收不到推送信息
  10. Python中的split()函数的使用方法
  11. 官方jdk历史版本的下载方式
  12. Linux 下查看局域网内所有主机IP和MAC
  13. ioswifi信号测试软件app,‎App Store 上的“Speedtest - 网络测速测量和wifi分析仪”...
  14. kdj买卖指标公式源码_通达信买卖KDJ副图指标公式
  15. 统计每个日期新用户的次日留存率
  16. 学习记录540@SVN查看日志报错:Item is not readable
  17. 抖音小店无货源,如何找到适合自己店铺的达人,精选联盟玩法分享
  18. Cloud一分钟 |互联网之冬;华为停招,BAT裁员;苹果下线拼多多应用;意媒谈DG风波:中国人记性差...
  19. python:命令行与环境
  20. R语言神经网络量化交易模型

热门文章

  1. java 内存指针_java内存模型详解
  2. es6 去掉空格_es6 filter() 数组过滤方法总结
  3. python中的映射_一文读懂Python中的映射
  4. 显卡花屏显存测试软件6,显卡花屏诊断好帮手:Video Memory Stress Test
  5. 删除用户账号的命令 mysql_【Mysql】常用指令之——用户操作(创建,授权,修改,删除)...
  6. xp无法使用计算机管理员权限,xp无法无法使用管理员权限运行软件的解决步骤...
  7. oracle表ddl,七、Oracle中DDL改变表结构操作
  8. Linux 切mms数据流,libmms MMSH Server响应解析缓冲区溢出漏洞
  9. Spring和Quartz配合实现定时任务
  10. python好用的内置库_第42p,time库,Python中优秀的内置库