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删除java文件头上版权信息的方法
Jul 31 Python
Python正则表达式的使用范例详解
Aug 08 Python
Python读写Excel文件方法介绍
Nov 22 Python
使用rpclib进行Python网络编程时的注释问题
May 06 Python
Python中List.count()方法的使用教程
May 20 Python
遗传算法python版
Mar 19 Python
django admin 后台实现三级联动的示例代码
Jun 22 Python
Tensorflow使用支持向量机拟合线性回归
Sep 07 Python
python单例模式原理与创建方法实例分析
Oct 26 Python
Python爬虫使用代理IP的实现
Oct 27 Python
Python基于Serializer实现字段验证及序列化
Nov 04 Python
装上这 14 个插件后,PyCharm 真的是无敌的存在
Jan 11 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
如何对PHP程序中的常见漏洞进行攻击
2006/10/09 PHP
php中防止伪造跨站请求的小招式
2011/09/02 PHP
php输出xml必须header的解决方法
2014/10/17 PHP
php封装的smartyBC类完整实例
2016/10/19 PHP
PHP实现二维数组去重功能示例
2017/01/12 PHP
jQuery 美元符冲突的解决方法
2010/03/28 Javascript
jquery ztree异步搜索(搜叶子)实践
2016/02/25 Javascript
jQuery AJAX timeout 超时问题详解
2016/06/21 Javascript
jQuery 移动端拖拽(模块化开发,触摸事件,webpack)
2016/10/28 Javascript
深入浅出理解JavaScript高级定时器原理与用法
2018/08/02 Javascript
微信小程序发送短信验证码完整实例
2019/01/07 Javascript
简单实现vue中的依赖收集与响应的方法
2019/02/18 Javascript
vue模仿网易云音乐的单页面应用
2019/04/24 Javascript
微信小程序实现点击图片放大预览
2019/10/21 Javascript
微信小程序实现左侧滑动导航栏
2020/04/08 Javascript
vue-form表单验证是否为空值的实例详解
2019/10/29 Javascript
详解Typescript 内置的模块导入兼容方式
2020/05/31 Javascript
vue项目中openlayers绘制行政区划
2020/12/24 Vue.js
[01:50:49]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Aster BO3 第三场 1月24日
2021/03/11 DOTA
python调用OpenCV实现人脸识别功能
2018/05/25 Python
在pandas多重索引multiIndex中选定指定索引的行方法
2018/11/16 Python
Python Opencv实现图像轮廓识别功能
2020/03/23 Python
Python3+PyInstall+Sciter解决报错缺少dll、html等文件问题
2019/07/15 Python
利用 Canvas实现绘画一个未闭合的带进度条的圆环
2019/07/26 HTML / CSS
埃弗顿足球俱乐部官方网上商店:Everton Direct
2018/01/13 全球购物
C#如何调用Word并打开一个Word文档
2013/05/08 面试题
一封普通求职者的求职信
2013/11/20 职场文书
酒店前台接待岗位职责
2013/12/03 职场文书
超市开店计划书
2014/09/15 职场文书
2014院党委领导班子及其成员群众路线对照检查材料思想汇报
2014/10/04 职场文书
公务员年度考核评语
2014/12/31 职场文书
新员工试用期工作总结2015
2015/05/28 职场文书
小学生反邪教心得体会
2016/01/15 职场文书
学习社交礼仪心得体会
2016/01/22 职场文书
js中Map和Set的用法及区别实例详解
2022/02/15 Javascript
你真的会用Mysql的explain吗
2022/03/31 MySQL