Python3 JSON编码解码方法详解


Posted in Python onSeptember 06, 2019

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它基于ECMAScript的一个子集。 JSON采用完全独立于语言的文本格式,这些特性使JSON成为理想的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成,在接口数据开发和传输中非常常用。

Python3中我们利用内置模块json解码和编码JSON对象。json模块提供了四个功能:dumps、dump、loads、load

dumps 把数据类型转换成字符串

dump 把数据类型转换成字符串并存储在文件中

loads 把字符串转换成数据类型

load 把文件打开从字符串转换成数据类型

dumps编码

我们利用 dumps 将Python对象编码为 JSON对象 ,当然 dumps 只完成了序列化为str,而 dump 必须传文件描述符,将序列化的str保存到文件中。

编码字典

import json
odata = {'www': 1, 'python': 2, 'Python3': 3}
jdata = json.dumps(odata)
print(jdata)

编码列表示例结果:

{"www": 1, "python": 2, "Python3": 3}
import json
ldata = [100, 'Python2', {'www': 1, 'python': 2, 'Python3': 3}]
jdata = json.dumps(ldata)
print(jdata)

示例结果:

[100, "Python3", {"www": 1, "python": 2, "Python3": 3}]

编码字符串

import json
sdata = 'Python3'
jdata = json.dumps(sdata)
print(jdata)

示例结果:

"Python3"

格式化输出JSON 

将下面的数组,转化为标准的json格式

参数解析:

import json
ldata = ['Python3', 100, {'www': 1, 'python': 2, 'Python3': 3}, True]
jdata = json.dumps(ldata, sort_keys=True, indent=4)
print(jdata)

示例结果:

[
  "Python3",
  100,
  {
    "Python3": 3,
    "python": 2,
    "www": 1
  },
  true
] 

sort_keys=True 那么字典的输出会以键的顺序排序

indent=4 表示缩进为4,如果 indent 是一个非负整数或者字符串,那么 JSON 数组元素和对象成员会被美化输出为该值指定的缩进等级。

转换关系对照表

下面为Python原始类型向JSON对象的转化对照表:

1 1
1 dict 1 object
1 list, tuple 1 array
1 str, unicode 1 string
1 int, long, float 1 number
1 True 1 true
1 False 1 false
1 None 1 null

loads解码

我们利用 loads 用于解码 JSON对象 。解码结果即与之对应的 Python对象 类型。当然 loads 只完成了反序列化, load 只接收文件描述符,完成读取文件和反序列化。

比如我们用来解码上个示例的数据

import json
jsondata = '''
[
  "Python3",
  100,
  {
    "Python3": 3,
    "python": 2,
    "www": 1
  },
  true
]
'''
ldata = json.loads(jsondata)
print(type(ldata))
print(ldata)

可以看到我们成功对上个例子中的JSON对象进行了解码,并且最终的解码结果为Python列表对象类型,符合Python对象JSON对象对照表的结果。

示例结果:

<class 'list'>
['Python3', 100, {'Python3': 3, 'python': 2, 'www': 1}, True] 

总结

Python3中的json解析和编码模块json使用起来非常简单, 功能也非常齐全,完全能够满足我们日常的需求。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python下的twisted框架入门指引
Apr 15 Python
python实现将html表格转换成CSV文件的方法
Jun 28 Python
利用Python爬取可用的代理IP
Aug 18 Python
python实现字符串连接的三种方法及其效率、适用场景详解
Jan 13 Python
tensorflow更改变量的值实例
Jul 30 Python
python 在屏幕上逐字显示一行字的实例
Dec 24 Python
Python 图像对比度增强的几种方法(小结)
Sep 25 Python
使用Tensorflow实现可视化中间层和卷积层
Jan 24 Python
python实现滑雪游戏
Feb 22 Python
Python Selenium 设置元素等待的三种方式
Mar 18 Python
Python Tornado之跨域请求与Options请求方式
Mar 28 Python
selenium+python自动化78-autoit参数化与批量上传功能的实现
Mar 04 Python
PYTHON EVAL的用法及注意事项解析
Sep 06 #Python
Python实现微信机器人的方法
Sep 06 #Python
Linux下通过python获取本机ip方法示例
Sep 06 #Python
django-crontab 定时执行任务方法的实现
Sep 06 #Python
Python使用matplotlib实现交换式图形显示功能示例
Sep 06 #Python
python自动发微信监控报警
Sep 06 #Python
Python使用Slider组件实现调整曲线参数功能示例
Sep 06 #Python
You might like
PHP4 与 MySQL 数据库操作函数详解
2006/10/09 PHP
php入门之连接mysql数据库的一个类
2012/04/21 PHP
如何运行/调试你的PHP代码
2020/10/23 PHP
常见表单重复提交问题整理及解决方法
2013/11/13 Javascript
jquery cookie的用法总结
2013/11/18 Javascript
浅析Cookie中的Path与domain
2013/12/18 Javascript
用Jquery实现滚动新闻
2014/02/12 Javascript
分享使用AngularJS创建应用的5个框架
2015/12/05 Javascript
jQuery实现多级联动下拉列表查询框
2016/01/18 Javascript
javascript弹出带文字信息的提示框效果
2016/07/19 Javascript
微信小程序模板和模块化用法实例分析
2017/11/28 Javascript
web页面和微信小程序页面实现瀑布流效果
2018/09/26 Javascript
JavaScript类的继承操作实例总结
2018/12/20 Javascript
深入理解令牌认证机制(token)
2019/08/22 Javascript
vue scroll滚动判断的实现(是否滚动到底部、滚动方向、滚动节流、获取滚动区域dom元素)
2020/06/11 Javascript
[40:06]DOTA2亚洲邀请赛 4.3 突围赛 Liquid vs VGJ.T 第一场
2018/04/04 DOTA
python获取本机mac地址和ip地址的方法
2015/04/29 Python
python实现linux下使用xcopy的方法
2015/06/28 Python
Python如何快速实现分布式任务
2017/07/06 Python
Python排序搜索基本算法之选择排序实例分析
2017/12/09 Python
python实现连连看辅助(图像识别)
2020/03/25 Python
python实现大学人员管理系统
2019/10/25 Python
Python SSL证书验证问题解决方案
2020/01/13 Python
pytorch+lstm实现的pos示例
2020/01/14 Python
Python 安装 virturalenv 虚拟环境的教程详解
2020/02/21 Python
英国人最爱的饰品网站:Accessorize
2016/08/22 全球购物
葡萄牙鞋子品牌:Fair
2016/12/10 全球购物
eBay德国站:eBay.de
2017/09/14 全球购物
小型女装店的创业计划书
2014/01/09 职场文书
合作经营协议书范本
2014/09/16 职场文书
买房协议书范本
2014/10/23 职场文书
经验交流材料格式
2014/12/30 职场文书
硕士毕业论文导师评语
2014/12/31 职场文书
运动员入场前导词
2015/07/20 职场文书
安全责任协议书范本
2016/03/23 职场文书
Python find()、rfind()方法及作用
2022/12/24 Python