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简单实现查找一个字符串中最长不重复子串的方法
Mar 26 Python
selenium + python 获取table数据的示例讲解
Oct 13 Python
Python合并同一个文件夹下所有PDF文件的方法
Mar 11 Python
Pandas之Fillna填充缺失数据的方法
Jun 25 Python
python实现LBP方法提取图像纹理特征实现分类的步骤
Jul 11 Python
Django基础三之视图函数的使用方法
Jul 18 Python
Django上线部署之IIS的配置方法
Aug 22 Python
python plotly画柱状图代码实例
Dec 13 Python
带你彻底搞懂python操作mysql数据库(cursor游标讲解)
Jan 06 Python
python实现FTP文件传输的方法(服务器端和客户端)
Mar 20 Python
Python实现PIL图像处理库绘制国际象棋棋盘
Jul 16 Python
Python Pandas数据分析之iloc和loc的用法详解
Nov 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
NO3第三帝国留言簿制作过程
2006/10/09 PHP
php中3种方法统计字符串中每种字符的个数并排序
2012/08/27 PHP
php之curl设置超时实例
2014/11/03 PHP
php生成圆角图片的方法
2015/04/07 PHP
PHP引用返回用法示例
2016/05/28 PHP
dreamweaver 8实现Jquery自动提示
2014/12/04 Javascript
javascript实现复选框超过限制即弹出警告框的方法
2015/02/25 Javascript
JS实现IE状态栏文字缩放效果代码
2015/10/24 Javascript
jquery实现的点击翻书效果代码
2015/11/04 Javascript
JavaScript必看小技巧(必看)
2016/06/07 Javascript
浅谈Vuejs Prop基本用法
2017/08/17 Javascript
React学习笔记之列表渲染示例详解
2017/08/22 Javascript
js实现单张图片平移切换效果
2017/10/11 Javascript
jQuery实现form表单序列化转换为json对象功能示例
2018/05/23 jQuery
JS数组splice操作实例分析
2019/10/12 Javascript
Layui实现数据表格默认全部显示(不要分页)
2019/10/26 Javascript
[55:45]LGD vs OG 2019国际邀请赛淘汰赛 胜者组 BO3 第三场 8.24
2019/09/10 DOTA
详解Python的Django框架中的通用视图
2015/05/04 Python
Python实现文件按照日期命名的方法
2015/07/09 Python
再谈Python中的字符串与字符编码(推荐)
2016/12/14 Python
利用python爬取软考试题之ip自动代理
2017/03/28 Python
python实现将读入的多维list转为一维list的方法
2018/06/28 Python
基于python3实现socket文件传输和校验
2018/07/28 Python
Django中日期处理注意事项与自定义时间格式转换详解
2018/08/06 Python
对python条件表达式的四种实现方法小结
2019/01/30 Python
Python自动抢红包教程详解
2019/06/11 Python
python批量将excel内容进行翻译写入功能
2019/10/10 Python
Python使用Matlab命令过程解析
2020/06/04 Python
基于python实现音乐播放器代码实例
2020/07/01 Python
关于webview适配H5上传照片或者视频文件的方法
2020/11/04 HTML / CSS
园长自我鉴定
2013/10/06 职场文书
新书发布会策划方案
2014/06/09 职场文书
水电工程师岗位职责
2015/02/13 职场文书
闪闪红星观后感
2015/06/08 职场文书
读《庄子》有感:美而不自知
2019/11/06 职场文书
Golang流模式之grpc的四种数据流
2022/04/13 Golang