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文件和目录操作函数小结
Jul 11 Python
Python中zip()函数用法实例教程
Jul 31 Python
在Django框架中编写Context处理器的方法
Jul 20 Python
Django重装mysql后启动报错:No module named ‘MySQLdb’的解决方法
Apr 22 Python
python gdal安装与简单使用
Aug 01 Python
基于Python实现拆分和合并GIF动态图
Oct 22 Python
解决windows上安装tensorflow时报错,“DLL load failed: 找不到指定的模块”的问题
May 20 Python
Python devel安装失败问题解决方案
Jun 09 Python
一文详述 Python 中的 property 语法
Sep 01 Python
Django filter动态过滤与排序实现过程解析
Nov 26 Python
PyQt5通过信号实现MVC的示例
Feb 06 Python
python 管理系统实现mysql交互的示例代码
Dec 06 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数组总结篇(一)
2008/09/30 PHP
基于curl数据采集之单页面采集函数get_html的使用
2013/04/28 PHP
php实现图形显示Ip地址的代码及注释
2014/01/20 PHP
PHP cURL获取微信公众号access_token的实例
2018/04/28 PHP
JQuery 遮罩层实现(mask)实现代码
2010/01/09 Javascript
jquery 实现表单验证功能代码(简洁)
2012/07/03 Javascript
nodejs npm package.json中文文档
2014/09/04 NodeJs
基于NodeJS的前后端分离的思考与实践(五)多终端适配
2014/09/26 NodeJs
如何在MVC应用程序中使用Jquery
2014/11/17 Javascript
jQuery中add()方法用法实例
2015/01/08 Javascript
简单实现异步编程promise模式
2015/07/31 Javascript
JQuery悬停控制图片轮播——代码简单
2015/08/05 Javascript
AngularJS基础 ng-disabled 指令详解及简单示例
2016/08/01 Javascript
基于jquery实现弹幕效果
2016/09/29 Javascript
Angular实现跨域(搜索框的下拉列表)
2017/02/16 Javascript
JS中数据结构与算法---排序算法(Sort Algorithm)实例详解
2019/06/17 Javascript
使用react context 实现vue插槽slot功能
2019/07/18 Javascript
微信小程序实现页面分享onShareAppMessage
2019/08/12 Javascript
[51:44]2018DOTA2亚洲邀请赛 4.3 突围赛 Optic vs iG 第二场
2018/04/04 DOTA
分享Python字符串关键点
2015/12/13 Python
Python环境变量设置方法
2016/08/28 Python
python中如何使用正则表达式的集合字符示例
2017/10/09 Python
Python cookbook(数据结构与算法)同时对数据做转换和换算处理操作示例
2018/03/23 Python
python实现扫雷小游戏
2020/04/24 Python
细说NumPy数组的四种乘法的使用
2020/12/18 Python
印尼太阳百货公司网站:Matahari
2018/02/04 全球购物
马来西亚演唱会订票网站:StubHub马来西亚
2018/10/18 全球购物
业务员岗位职责
2013/11/16 职场文书
培训心得体会
2013/12/29 职场文书
计算机相关的自我评价
2014/01/15 职场文书
政治学专业毕业生求职信
2014/08/11 职场文书
反腐倡廉警示教育活动心得体会
2014/09/04 职场文书
特岗教师个人总结
2015/02/10 职场文书
预备党员个人总结
2015/02/14 职场文书
Python面向对象之内置函数相关知识总结
2021/06/24 Python
8个JS的reduce使用实例和reduce操作方式
2021/10/05 Javascript