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中for循环控制语句用法实例
Jun 02 Python
星球大战与Python之间的那些事
Jan 07 Python
为Python的Tornado框架配置使用Jinja2模板引擎的方法
Jun 30 Python
Python 批量合并多个txt文件的实例讲解
May 08 Python
python使用xlsxwriter实现有向无环图到Excel的转换
Dec 12 Python
详解python实现数据归一化处理的方式:(0,1)标准化
Jul 17 Python
python实现单链表的方法示例
Sep 03 Python
Python实现TCP探测目标服务路由轨迹的原理与方法详解
Sep 04 Python
pytorch中交叉熵损失(nn.CrossEntropyLoss())的计算过程详解
Jan 02 Python
python相对企业语言优势在哪
Jun 12 Python
calendar在python3时间中常用函数举例详解
Nov 18 Python
python爬虫实现爬取同一个网站的多页数据的实例讲解
Jan 18 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
使用ThinkPHP自带的Http类下载远程图片到本地的实现代码
2011/08/02 PHP
php命令行使用方法和命令行参数说明
2014/04/08 PHP
javascript Prototype 对象扩展
2009/05/15 Javascript
简单的js分页脚本
2009/05/21 Javascript
js操作select控件的几种方法
2010/06/02 Javascript
jquery简单的拖动效果实现原理及示例
2013/07/26 Javascript
window.location.href = window.location.href 跳转无反应 a超链接onclick事件写法
2013/08/21 Javascript
javascript中数组的concat()方法使用介绍
2013/12/18 Javascript
Javascript图片上传前的本地预览实例
2014/06/16 Javascript
jquery ztree异步搜索(搜叶子)实践
2016/02/25 Javascript
教你如何在Node.js中使用jQuery
2016/08/28 Javascript
jQuery实现 上升、下降、删除、添加一行代码
2017/03/06 Javascript
jQuery插件FusionCharts实现的2D面积图效果示例【附demo源码下载】
2017/03/06 Javascript
bootstrap是什么_动力节点Java学院整理
2017/07/14 Javascript
基于vue2实现左滑删除功能
2017/11/28 Javascript
使用Angular CLI进行单元测试和E2E测试的方法
2018/03/24 Javascript
在iFrame子页面里实现模态框的方法
2018/08/17 Javascript
Vue注册组件命名时不能用大写的原因浅析
2019/04/25 Javascript
利用layer实现表单完美验证的方法
2019/09/26 Javascript
vue动态合并单元格并添加小计合计功能示例
2020/11/26 Vue.js
Python sys.path详细介绍
2013/10/17 Python
Django contenttypes 框架详解(小结)
2018/08/13 Python
Python CSV文件模块的使用案例分析
2019/12/21 Python
Django 项目布局方法(值得推荐)
2020/03/22 Python
Pycharm打开已有项目配置python环境的方法
2020/07/03 Python
Python实现敏感词过滤的4种方法
2020/09/12 Python
HTML5 Canvas实现360度全景图的示例代码
2018/01/29 HTML / CSS
HTML5新标签兼容——> 的两种方法
2018/09/12 HTML / CSS
Kate Spade美国官网:纽约新兴时尚品牌,以包包闻名于世
2017/11/09 全球购物
2013年员工自我评价范文
2013/12/27 职场文书
二手书店创业计划书
2014/01/16 职场文书
债务纠纷委托书
2014/08/30 职场文书
学前教育见习总结
2015/06/23 职场文书
【海涛教你打DOTA】死灵飞龙第一视角解说
2022/04/01 DOTA
MYSQL中文乱码问题的解决方案
2022/06/14 MySQL
MySQL 原理与优化之原数据锁的应用
2022/08/14 MySQL