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静态方法实例
Jan 14 Python
详解Python中with语句的用法
Apr 15 Python
RC4文件加密的python实现方法
Jun 30 Python
详解python单例模式与metaclass
Jan 15 Python
python flask 如何修改默认端口号的方法步骤
Jul 12 Python
Python udp网络程序实现发送、接收数据功能示例
Dec 09 Python
Python调用Windows命令打印文件
Feb 07 Python
Keras使用tensorboard显示训练过程的实例
Feb 15 Python
详解Python3中的 input() 函数
Mar 18 Python
Pycharm制作搞怪弹窗的实现代码
Feb 19 Python
对pytorch中x = x.view(x.size(0), -1) 的理解说明
Mar 03 Python
聊聊基于pytorch实现Resnet对本地数据集的训练问题
Mar 25 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中Session引起的脚本阻塞问题解决办法
2014/04/08 PHP
PHP正则匹配反斜杠'\'和美元'$'的方法
2017/02/08 PHP
PHP getDocNamespaces()函数讲解
2019/02/03 PHP
基于jquery异步传输json数据格式实例代码
2013/11/23 Javascript
Jquery ajaxStart()与ajaxStop()方法(实例讲解)
2013/12/18 Javascript
获取中文字符串的实际长度代码
2014/06/05 Javascript
jQuery中:nth-child选择器用法实例
2014/12/31 Javascript
JS实现的不规则TAB选项卡效果代码
2015/09/18 Javascript
jquery ztree实现树的搜索功能
2016/02/25 Javascript
jquery checkbox的相关操作总结
2016/10/17 Javascript
概述javascript在Google IE中的调试技巧
2016/11/24 Javascript
Vue开发中整合axios的文件整理
2017/04/29 Javascript
Vue.js实现可排序的表格组件功能示例
2019/02/19 Javascript
基于原生js实现判断元素是否有指定class名
2020/07/11 Javascript
Python中条件选择和循环语句使用方法介绍
2013/03/13 Python
Python聚类算法之DBSACN实例分析
2015/11/20 Python
利用python将xml文件解析成html文件的实现方法
2017/12/22 Python
python实现自动发送报警监控邮件
2018/06/21 Python
python中正则表达式 re.findall 用法
2018/10/23 Python
python批量修改图片尺寸,并保存指定路径的实现方法
2019/07/04 Python
python实现一个点绕另一个点旋转后的坐标
2019/12/04 Python
Python selenium抓取虎牙短视频代码实例
2020/03/02 Python
如何解决pycharm调试报错的问题
2020/08/06 Python
基于html5 canvas实现漫天飞雪效果实例
2014/09/10 HTML / CSS
印度最大的网上花店:Ferns N Petals(鲜花、礼品和蛋糕)
2017/10/16 全球购物
eBay瑞士购物网站:eBay.ch
2018/12/24 全球购物
亚马逊巴西站:Amazon.com.br
2019/09/22 全球购物
牵手50台湾:专为黄金岁月的单身人士而设的交友网站
2021/02/18 全球购物
JBL加拿大官方商店:扬声器、耳机等
2020/10/23 全球购物
中年人生感言
2014/02/04 职场文书
院党委组织查摆问题对照检查材料思想汇报2014
2014/10/08 职场文书
实习计划书范文
2015/01/16 职场文书
研究生论文答辩开场白
2015/05/27 职场文书
中国合伙人观后感
2015/06/02 职场文书
董事会决议范本
2015/07/01 职场文书
MySQL创建管理子分区
2022/04/13 MySQL