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笔记(1) 关于我们应不应该继续学习python
Oct 24 Python
python将人民币转换大写的脚本代码
Feb 10 Python
python文件操作整理汇总
Oct 21 Python
python中readline判断文件读取结束的方法
Nov 08 Python
插入排序_Python与PHP的实现版(推荐)
May 11 Python
python使用opencv按一定间隔截取视频帧
Mar 06 Python
python tools实现视频的每一帧提取并保存
Mar 20 Python
pyqt5 禁止窗口最大化和禁止窗口拉伸的方法
Jun 18 Python
selenium+PhantomJS爬取豆瓣读书
Aug 26 Python
python对Excel按条件进行内容补充(推荐)
Nov 24 Python
Python HTMLTestRunner库安装过程解析
May 25 Python
详解numpy.ndarray.reshape()函数的参数问题
Oct 13 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 array_intersect比array_diff快(附详细的使用说明)
2011/07/03 PHP
PHP使用正则表达式获取微博中的话题和对象名
2015/07/18 PHP
自定义Laravel (monolog)日志位置,并增加请求ID的实现
2019/10/17 PHP
Laravel ORM 数据model操作教程
2019/10/21 PHP
TextArea 控件的最大长度问题(js json)
2009/12/16 Javascript
js+css 实现遮罩居中弹出层(随浏览器窗口滚动条滚动)
2013/12/11 Javascript
JQuery弹出层示例可自定义
2014/05/19 Javascript
Jquery中Event对象属性小结
2015/02/27 Javascript
js实现左侧网页tab滑动门效果代码
2015/09/06 Javascript
JavaScript中的boolean布尔值使用学习及相关技巧讲解
2016/05/26 Javascript
利用JS实现页面删除并重新排序功能
2016/12/09 Javascript
Angular1.x复杂指令实例详解
2017/03/01 Javascript
BootStrap Fileinput上传插件使用实例代码
2017/07/28 Javascript
JQ图片文件上传之前预览功能的简单实例(分享)
2017/11/12 Javascript
详解Nodejs get获取远程服务器接口数据
2019/03/26 NodeJs
vue-cli3中配置alias和打包加hash值操作
2020/09/04 Javascript
在antd Form表单中select设置初始值操作
2020/11/02 Javascript
[01:59]DOTA2首部纪录片《Free to play》预告片
2014/03/12 DOTA
利用python写个下载teahour音频的小脚本
2017/05/08 Python
Django添加feeds功能的示例
2018/08/07 Python
使用Python 正则匹配两个特定字符之间的字符方法
2018/12/24 Python
Python使用pymongo库操作MongoDB数据库的方法实例
2019/02/22 Python
python GUI库图形界面开发之PyQt5菜单栏控件QMenuBar的详细使用方法与实例
2020/02/28 Python
python 使用cx-freeze打包程序的实现
2020/03/14 Python
浅谈keras通过model.fit_generator训练模型(节省内存)
2020/06/17 Python
python3爬虫中多线程的优势总结
2020/11/24 Python
css3制作彩色边线3d立体按钮的示例(css3按钮)
2014/05/06 HTML / CSS
HTML5和以前HTML4的区别整理
2013/10/20 HTML / CSS
HTML5操作WebSQL数据库的实例代码
2017/08/26 HTML / CSS
澳大利亚在线百货商店:Real Smart
2017/08/13 全球购物
运动会入场式解说词
2014/02/18 职场文书
会员活动策划方案
2014/08/19 职场文书
群教个人对照检查材料
2014/08/20 职场文书
机械设计专业大学生职业生涯规划书范文
2014/09/13 职场文书
行政执法队伍作风整顿剖析材料
2014/10/11 职场文书
工作作风建设心得体会
2014/10/22 职场文书