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获取GY-85九轴模块信息示例
Dec 05 Python
在Python中使用PIL模块对图片进行高斯模糊处理的教程
May 05 Python
实例Python处理XML文件的方法
Aug 31 Python
python实现SOM算法
Feb 23 Python
python numpy 部分排序 寻找最大的前几个数的方法
Jun 27 Python
Python 实现某个功能每隔一段时间被执行一次的功能方法
Oct 14 Python
python实现二分类的卡方分箱示例
Nov 22 Python
Django CSRF认证的几种解决方案
Mar 03 Python
python3环境搭建过程(利用Anaconda+pycharm)完整版
Aug 19 Python
python两种注释用法的示例
Oct 09 Python
PyCharm2020.3.2安装超详细教程
Feb 08 Python
Python3爬虫RedisDump的安装步骤
Feb 20 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购物网站支付paypal使用方法
2010/11/28 PHP
PHP中return 和 exit 、break和contiue 区别与用法
2012/04/09 PHP
php使用cookie保存登录用户名的方法
2015/01/26 PHP
PHP中配置IIS7实现基本身份验证的方法
2015/09/24 PHP
Joomla语言翻译类Jtext用法分析
2016/05/05 PHP
PHP实现合并两个排序链表的方法
2018/01/19 PHP
thinkPHP5框架实现基于ajax的分页功能示例
2018/06/12 PHP
PHP实现简单计算器小程序
2020/08/28 PHP
Laravel validate error处理,ajax,json示例
2019/10/25 PHP
javascript arguments 传递给函数的隐含参数
2009/08/21 Javascript
几个有趣的Javascript Hack
2010/07/24 Javascript
json数据的列循环示例
2013/09/06 Javascript
判断滚动条到底部的JS代码
2013/11/04 Javascript
javascript的alert box在java中如何显示多行
2014/05/18 Javascript
Extjs Label的 fieldLabel和html属性值对齐的方法
2014/06/15 Javascript
jQuery实现动画效果circle实例
2015/08/06 Javascript
js实现开启密码大写提示
2016/12/21 Javascript
javascript 数据存储的常用函数总结
2017/06/01 Javascript
利用jQuery异步上传文件的插件用法详解
2017/07/19 jQuery
javaScript手机号码校验工具类PhoneUtils详解
2017/12/08 Javascript
vue 注册组件的使用详解
2018/05/05 Javascript
JavaScript+Canvas实现彩色图片转换成黑白图片的方法分析
2018/07/31 Javascript
Element DateTimePicker日期时间选择器的使用示例
2020/07/27 Javascript
opencv python 2D直方图的示例代码
2018/07/20 Python
python框架中flask知识点总结
2018/08/17 Python
python 使用re.search()筛选后 选取部分结果的方法
2018/11/28 Python
英国人最爱的饰品网站:Accessorize
2016/08/22 全球购物
英国领先的男士服装和时尚零售商:Burton
2017/01/09 全球购物
英国知名化妆品网站:Revolution Beauty(原TAM Beauty)
2018/02/28 全球购物
传播学毕业生求职信
2013/10/11 职场文书
中英双版中文教师求职信
2013/10/27 职场文书
简短的公司员工自我评价分享
2013/11/13 职场文书
园艺师求职信
2014/03/10 职场文书
团支部推优材料
2014/05/21 职场文书
护士节慰问信
2015/02/15 职场文书
用Python编写简单的gRPC服务的详细过程
2021/07/04 Python