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实现ftp客户端示例分享
Feb 17 Python
Python中运算符&quot;==&quot;和&quot;is&quot;的详解
Oct 08 Python
详解Python3中字符串中的数字提取方法
Jan 14 Python
Python yield与实现方法代码分析
Feb 06 Python
PyQt5+requests实现车票查询工具
Jan 21 Python
简单了解django索引的相关知识
Jul 17 Python
基于python实现数组格式参数加密计算
Apr 21 Python
Python并发concurrent.futures和asyncio实例
May 04 Python
Python爬虫破解登陆哔哩哔哩的方法
Nov 17 Python
分享一枚pycharm激活码适用所有pycharm版本我的pycharm2020.2.3激活成功
Nov 20 Python
详解Python 中的 defaultdict 数据类型
Feb 22 Python
python 实现定时任务的四种方式
Apr 01 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
ThinkPHP中url隐藏入口文件后接收alipay传值的方法
2014/12/09 PHP
php调用淘宝开放API实现根据卖家昵称获取卖家店铺ID的方法
2015/07/29 PHP
PHP6新特性分析
2016/03/03 PHP
PHP实现适用于文件内容操作的分页类
2016/06/15 PHP
laravel http 自定义公共验证和响应的方法
2019/09/29 PHP
js的写法基础分析
2011/01/17 Javascript
myEvent.js javascript跨浏览器事件框架
2011/10/24 Javascript
js控制不同的时间段显示不同的css样式的实例代码
2013/11/04 Javascript
javascript实现无限级select联动菜单
2015/01/02 Javascript
javascript中类的定义方式详解(四种方式)
2015/12/22 Javascript
AngularJS使用ng-app自动加载bootstrap框架问题分析
2017/01/04 Javascript
Vue.js tab实现选项卡切换
2017/05/16 Javascript
详解微信第三方小程序代开发
2017/06/23 Javascript
Canvas放置反弹效果随机图形(实例)
2017/08/17 Javascript
基于 Vue 的树形选择组件的示例代码
2017/08/18 Javascript
强大的JavaScript响应式图表Chartist.js的使用
2017/09/13 Javascript
vue使用v-for实现hover点击效果
2018/09/29 Javascript
vue 内置过滤器的使用总结(附加自定义过滤器)
2018/12/11 Javascript
[03:06]V社市场总监Dota2项目负责人Erik专访:希望更多中国玩家加入DOTA2
2014/07/11 DOTA
python常用函数详解
2016/09/13 Python
解决Python2.7读写文件中的中文乱码问题
2018/04/12 Python
python如何保证输入键入数字的方法
2019/08/23 Python
解决python 读取 log日志的编码问题
2019/12/24 Python
基于Tensorflow批量数据的输入实现方式
2020/02/05 Python
美国在线家具网站:GDFStudio
2021/03/13 全球购物
移风易俗倡议书
2014/04/15 职场文书
运动会稿件100字
2014/09/24 职场文书
领导班子三严三实对照检查材料
2014/09/25 职场文书
县委常委班子对照检查材料思想汇报
2014/09/28 职场文书
2014年中职班主任工作总结
2014/12/16 职场文书
因家庭原因离职的辞职信范文
2015/05/12 职场文书
2015年节能降耗工作总结
2015/05/22 职场文书
学校运动会开幕词
2016/03/03 职场文书
Golang中异常处理机制详解
2021/06/08 Golang
Python探索生命起源 matplotlib细胞自动机动画演示
2022/04/21 Python
css清除浮动clearfix:after的用法详解(附完整代码)
2023/05/21 HTML / CSS