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 20 Python
python 执行shell命令并将结果保存的实例
May 11 Python
python3 cvs将数据读取为字典的方法
Dec 22 Python
python3对拉勾数据进行可视化分析的方法详解
Apr 03 Python
python中append实例用法总结
Jul 30 Python
Python实现网页截图(PyQT5)过程解析
Aug 12 Python
python实现图片横向和纵向拼接
Mar 05 Python
Python实现动态循环输出文字功能
May 07 Python
Django 允许局域网中的机器访问你的主机操作
May 13 Python
Django Path转换器自定义及正则代码实例
May 29 Python
Python confluent kafka客户端配置kerberos认证流程详解
Oct 12 Python
Python find()、rfind()方法及作用
Dec 24 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 判断网页是否是utf8编码的方法
2014/06/06 PHP
解决php写入数据库乱码的问题
2019/09/17 PHP
Laravel手动返回错误码示例
2019/10/22 PHP
PHP For循环字母A-Z当超过26个字母时输出AA,AB,AC
2020/02/16 PHP
用正则xmlHttp实现的偷(转)
2007/01/22 Javascript
由JavaScript中call()方法引发的对面向对象继承机制call的思考
2011/09/12 Javascript
jquery实现checkbox全选全不选的简单实例
2013/12/31 Javascript
js判断滚动条是否已到页面最底部或顶部实例
2014/11/20 Javascript
基于Javascript实现返回顶部按钮
2016/02/29 Javascript
AngularJS基础 ng-mouseover 指令简单示例
2016/08/02 Javascript
AngularJs  Creating Services详解及示例代码
2016/09/02 Javascript
微信小程序中子页面向父页面传值实例详解
2017/03/20 Javascript
利用JavaScript在网页实现八数码启发式A*算法动画效果
2017/04/16 Javascript
jQuery自定义多选下拉框效果
2017/06/19 jQuery
详解基于Angular4+ server render(服务端渲染)开发教程
2017/08/28 Javascript
原生JS 实现的input输入时表格过滤操作示例
2019/08/03 Javascript
javascript操作向表格中动态加载数据
2020/08/27 Javascript
vue自定义指令和动态路由实现权限控制
2020/08/28 Javascript
python 链接和操作 memcache方法
2017/03/04 Python
Python类的动态修改的实例方法
2017/03/24 Python
Python 装饰器实现DRY(不重复代码)原则
2018/03/05 Python
在Django中URL正则表达式匹配的方法
2018/12/20 Python
实例详解Matlab 与 Python 的区别
2019/04/26 Python
python模块如何查看
2020/06/16 Python
Python获取浏览器窗口句柄过程解析
2020/07/25 Python
通过实例简单了解python yield使用方法
2020/08/06 Python
CSS3 制作旋转的大风车(充满童年回忆)
2013/01/30 HTML / CSS
详解如何在css中引入自定义字体(font-face)
2018/05/17 HTML / CSS
CAT鞋美国官网:CAT Footwear
2017/11/27 全球购物
Groupon荷兰官方网站:高达70%的折扣
2019/11/01 全球购物
犹他州最古老的体育用品公司:Al’s
2020/12/18 全球购物
高中生自我评价个人范文
2013/11/09 职场文书
基于Python和openCV实现图像的全景拼接详细步骤
2021/10/05 Python
Android开发之WECHAT微信小程序路由跳转的两种形式
2022/04/12 Java/Android
mysql中如何用命令创建联合唯一索引
2022/04/20 MySQL