Python读取JSON数据操作实例解析


Posted in Python onMay 18, 2020

读写 JSON 数据

问题

你想读写 JSON(JavaScript Object Notation) 编码格式的数据。

解决方案

json模块提供给了一种很简单的方式来编码和解码json数据,其中两个主要的函数时json.dumps()和 json.loads()

下面演示如何将一个 Python 数据结构转换为 JSON:

import json
data = {
'name' : 'ACME',
'shares' : 100,
'price' : 542.23
}json_str = json.dumps(data)
下面演示如何将一个 JSON 编码的字符串转换回一个 Python 数据结构:
data = json.loads(json_str)
如果你要处理的是文件而不是字符串,你可以使用 json.dump() 和 json.load()来编码和解码 JSON 数据。
例如:
# 写入一个json数据
with open('data.json', 'w') as f:j
son.dump(data, f)
with open('data.json', 'r') as f:
data = json.load(f)

讨论

JSON 编码支持的基本数据类型为 None ,bool ,int ,float 和 str ,以及包含 这些类型数据的 lists,tuples 和 dictionaries。
对于 dictionaries,keys 需要是字符串类型 (字典中任何非字符串类型的 key 在编码时会先转换为字符串)。

为了遵循 JSON规范,你应该只编码 Python 的 lists 和 dictionaries。而且,在 web 应用程序中,顶层对象被编码为一个字典是一个标准做法。JSON 编码的格式对于 Python 语法而已几乎是完全一样的,除了一些小的差异之 外。比如,True 会被映射为 true,False 被映射为 false,而 None 会被映射为 null。
下面是一个例子,演示了编码后的字符串效果:

>>> json.dumps(False)
'false'
>>> d = {'a': True,
... 'b': 'Hello',
... 'c': None}
>>> json.dumps(d)
'{"b": "Hello", "c": null, "a": true}'
>>>

如果你试着去检查 JSON 解码后的数据,你通常很难通过简单的打印来确定它 的结构,特别是当数据的嵌套结构层次很深或者包含大量的字段时。

为了解决这个问 题,可以考虑使用 pprint 模块的 pprint() 函数来代替普通的 print() 函数。它会按 照 key 的字母顺序并以一种更加美观的方式输出。

如下:

Python读取JSON数据操作实例解析

一般来讲,JSON 解码会根据提供的数据创建dicts 或 lists。

如果你想要创建其他 类型的对象,可以给 json.loads() 传递object_pairs_hook 或 object_hook参数。

例 如,下面是演示如何解码 JSON 数据并在一个 OrderedDict 中保留其顺序的例子

Python读取JSON数据操作实例解析

Python读取JSON数据操作实例解析

最后一个例子中,JSON 解码后的字典作为一个单个参数传递给 __init__() 。然 后,你就可以随心所欲的使用它了,比如作为一个实例字典来直接使用它。

在编码 JSON 的时候,还有一些选项很有用。如果你想获得漂亮的格式化字符串 后输出,可以使用json.dumps() 的 indent 参数。它会使得输出和 pprint() 函数效果 类似。比如:

Python读取JSON数据操作实例解析

对象实例通常并不是 JSON 可序列化的。

如果你想序列化对象实例,你可以提供一个函数,它的输入是一个实例,返回一个可序列化的字典。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python cookielib 登录人人网的实现代码
Dec 19 Python
使用C语言扩展Python程序的简单入门指引
Apr 14 Python
简单介绍Python中用于求最小值的min()方法
May 15 Python
机器学习经典算法-logistic回归代码详解
Dec 22 Python
PyQt5实现下载进度条效果
Apr 19 Python
python 搭建简单的http server,可直接post文件的实例
Jan 03 Python
django 微信网页授权登陆的实现
Jul 30 Python
python异常处理try except过程解析
Feb 03 Python
django3.02模板中的超链接配置实例代码
Feb 04 Python
Python暴力破解Mysql数据的示例
Nov 09 Python
用python批量下载apk
Dec 29 Python
Python 将代码转换为可执行文件脱离python环境运行(步骤详解)
Jan 25 Python
基于django 的orm中非主键自增的实现方式
May 18 #Python
Mysql数据库反向生成Django里面的models指令方式
May 18 #Python
Jupyter notebook快速入门教程(推荐)
May 18 #Python
解决django 向mysql中写入中文字符出错的问题
May 18 #Python
Anaconda3中的Jupyter notebook添加目录插件的实现
May 18 #Python
python实现人像动漫化的示例代码
May 17 #Python
django日志默认打印request请求信息的方法示例
May 17 #Python
You might like
[原创]php常用字符串输出方法分析(echo,print,printf及sprintf)
2016/07/09 PHP
PHP编程求最大公约数与最小公倍数的方法示例
2017/05/29 PHP
PHP快速排序算法实现的原理及代码详解
2019/04/03 PHP
关于juqery radio写法的兼容性问题(新老版本jquery)
2010/06/14 Javascript
动态改变div的z-index属性的简单实例
2013/08/08 Javascript
完美兼容各大浏览器的jQuery仿新浪图文淡入淡出间歇滚动特效
2014/11/12 Javascript
在JavaScript的jQuery库中操作AJAX的方法讲解
2015/08/15 Javascript
jQuery validate插件submitHandler提交导致死循环解决方法
2016/01/21 Javascript
浅析JavaScript中浏览器的兼容问题
2016/04/19 Javascript
浅谈JavaScript的内置对象和浏览器对象
2016/06/03 Javascript
性能优化之代码优化页面加载速度
2017/03/01 Javascript
详解Vue-基本标签和自定义控件
2017/03/24 Javascript
webpack配置文件和常用配置项介绍
2017/04/28 Javascript
如何把vuejs打包出来的文件整合到springboot里
2018/07/26 Javascript
jQuery实现为动态添加的元素绑定事件实例分析
2018/09/07 jQuery
vue.js实现回到顶部动画效果
2019/07/31 Javascript
对vue生命周期的深入理解
2020/12/03 Vue.js
python对html代码进行escape编码的方法
2015/05/04 Python
Tesserocr库的正确安装方式
2018/10/19 Python
python3去掉string中的标点符号方法
2019/01/22 Python
python3实现绘制二维点图
2019/12/04 Python
python实现提取str字符串/json中多级目录下的某个值
2020/02/27 Python
Django 多对多字段的更新和插入数据实例
2020/03/31 Python
浅谈keras通过model.fit_generator训练模型(节省内存)
2020/06/17 Python
HTML5的Video标签有部分MP4无法播放的问题解析(多图)
2017/08/18 HTML / CSS
AmazeUI 评论列表的实现示例
2020/08/13 HTML / CSS
澳大利亚儿童精品仓库:Goo & Co.
2019/06/20 全球购物
会计专业毕业生求职信分享
2014/01/03 职场文书
收银员的岗位职责范本
2014/02/04 职场文书
创建精神文明单位实施方案
2014/03/08 职场文书
2015年药店工作总结
2015/04/20 职场文书
2015年秋学期教研工作总结
2015/10/14 职场文书
七年级作文之雪景
2019/11/18 职场文书
python获取淘宝服务器时间的代码示例
2021/04/22 Python
nginx负载功能+nfs服务器功能解析
2022/02/28 Servers
详解Vue3使用axios的配置教程
2022/04/29 Vue.js