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使用scrapy采集数据过程中放回下载过大页面的方法
Apr 08 Python
Python爬虫DOTA排行榜爬取实例(分享)
Jun 13 Python
python读取LMDB中图像的方法
Jul 02 Python
python查询文件夹下excel的sheet名代码实例
Apr 02 Python
Python3列表内置方法大全及示例代码小结
May 10 Python
python3的print()函数的用法图文讲解
Jul 16 Python
python获取array中指定元素的示例
Nov 26 Python
python通过opencv实现图片裁剪原理解析
Jan 19 Python
解决windows下python3使用multiprocessing.Pool出现的问题
Apr 08 Python
python为什么要安装到c盘
Jul 20 Python
浅析Python 多行匹配模式
Jul 24 Python
详解Python中list[::-1]的几种用法
Nov 16 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中mt_rand()随机数的安全
2017/10/12 PHP
ThinkPHP防止重复提交表单的方法实例分析
2018/05/10 PHP
PHP7新特性之抽象语法树(AST)带来的变化详解
2018/07/17 PHP
PHP get_html_translation_table()函数用法讲解
2019/02/16 PHP
JS无限树状列表实现代码
2011/01/11 Javascript
基于jquery固定于顶部的导航响应浏览器滚动条事件
2014/11/02 Javascript
js实现鼠标悬浮给图片加边框的方法
2015/01/30 Javascript
Javascript中的方法和匿名方法实例详解
2015/06/13 Javascript
jquery+html5烂漫爱心表白动画代码分享
2015/08/24 Javascript
jQuery实现鼠标经过时出现隐藏层文字链接的方法
2015/10/12 Javascript
ichart.js绘制虚线、平均分虚线效果的实现代码
2016/05/05 Javascript
Javascript中函数名.length属性用法分析(对比arguments.length)
2016/09/16 Javascript
js返回顶部实例分享
2016/12/21 Javascript
Javascript blur与click冲突解决办法
2017/01/09 Javascript
浅谈原生JS实现jQuery的animate()动画示例
2017/03/08 Javascript
在百度搜索结果中去除掉一些网站的资料(通过js控制不让显示)
2017/05/02 Javascript
JavaScript中一些特殊的字符运算
2017/08/17 Javascript
react配合antd组件实现的管理系统示例代码
2018/04/24 Javascript
使用js实现将后台传入的json数据放在前台显示
2018/08/06 Javascript
Nodejs Express 通过log4js写日志到Logstash(ELK)
2018/08/30 NodeJs
element-ui upload组件多文件上传的示例代码
2018/10/17 Javascript
vue路由前进后退动画效果的实现代码
2018/12/10 Javascript
微信小程序中如何使用flyio封装网络请求
2019/07/03 Javascript
vue cli安装使用less的教程详解
2019/07/12 Javascript
Python入门篇之列表和元组
2014/10/17 Python
Python绘制七段数码管实例代码
2017/12/20 Python
python文字转语音实现过程解析
2019/11/12 Python
非常漂亮的CSS3百叶窗焦点图动画
2016/02/24 HTML / CSS
Aosom西班牙:家具在线商店
2020/06/11 全球购物
微观物理专业自荐信
2014/01/26 职场文书
挂科检讨书范文
2014/02/20 职场文书
三八红旗手事迹材料
2014/12/26 职场文书
打架检讨书范文
2015/01/27 职场文书
大学生读书笔记范文
2015/07/01 职场文书
祝福语集锦:给妹妹结婚的祝福语
2019/12/18 职场文书
分享几个实用的CSS代码块
2022/06/10 HTML / CSS