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之入门(二)基本数据类型
May 25 Python
python判断windows系统是32位还是64位的方法
May 11 Python
Python fileinput模块使用实例
May 28 Python
Python 40行代码实现人脸识别功能
Apr 02 Python
Python实现识别手写数字 简易图片存储管理系统
Jan 29 Python
Numpy之random函数使用学习
Jan 29 Python
python pygame实现五子棋小游戏
Oct 26 Python
Pandas之Fillna填充缺失数据的方法
Jun 25 Python
python中树与树的表示知识点总结
Sep 14 Python
Python生成随机验证码代码实例解析
Jun 09 Python
详解用Python调用百度地图正/逆地理编码API
Jul 02 Python
python-地图可视化组件folium的操作
Dec 14 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
用文本文件制作留言板提示(下)
2006/10/09 PHP
解决phpmyadmin 乱码,支持gb2312和utf-8
2006/11/20 PHP
利用PHP实现图片等比例放大和缩小的方法详解
2013/06/06 PHP
深入php处理整数函数的详解
2013/06/09 PHP
ThinkPHP5.0 图片上传生成缩略图实例代码说明
2018/06/20 PHP
基于JQuery的浮动DIV显示提示信息并自动隐藏
2011/02/11 Javascript
分别用marquee和div+js实现首尾相连循环滚动效果,仅3行代码
2011/09/21 Javascript
javascript工具库代码
2012/03/29 Javascript
浅析jQuery1.8的几个小变化
2013/12/10 Javascript
JS cookie中文乱码解决方法
2014/01/28 Javascript
javascript中数组array及string的方法总结
2014/11/28 Javascript
jQuery后代选择器用法实例
2014/12/23 Javascript
JavaScript删除数组元素的方法
2015/03/20 Javascript
纯CSS3代码实现滑动开关效果
2015/08/19 Javascript
基于javascript实现九宫格大转盘效果
2020/05/28 Javascript
WebView启动支付宝客户端支付失败的问题小结
2017/01/11 Javascript
React组件的三种写法总结
2017/01/12 Javascript
解析vue路由异步组件和懒加载案例
2018/06/08 Javascript
基于vue.js实现分页查询功能
2018/12/29 Javascript
详解Nodejs get获取远程服务器接口数据
2019/03/26 NodeJs
JavaScript中EventBus实现对象之间通信
2020/10/18 Javascript
[36:05]完美世界DOTA2联赛循环赛 Forest vs DM 第一场 11.06
2020/11/06 DOTA
使用Python编写简单网络爬虫抓取视频下载资源
2014/11/04 Python
Python的Django框架中settings文件的部署建议
2015/05/30 Python
python中list列表的高级函数
2016/05/17 Python
详解如何设置Python环境变量?
2019/05/13 Python
pytorch 更改预训练模型网络结构的方法
2019/08/19 Python
vscode调试django项目的方法
2020/08/06 Python
介绍一下SOA和SOA的基本特征
2016/02/24 面试题
升职自荐信范文
2013/10/05 职场文书
职称评定自我鉴定
2014/03/18 职场文书
企业趣味活动方案
2014/08/21 职场文书
安全保卫工作竞聘材料
2014/08/25 职场文书
综合素质评价自我评价
2015/03/06 职场文书
勤俭节约主题班会
2015/08/13 职场文书
文书工作总结(范文)
2019/07/11 职场文书