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中os模块详解
Oct 14 Python
Python实现的爬虫功能代码
Jun 24 Python
Python基于回溯法解决01背包问题实例
Dec 06 Python
Python实现将一个正整数分解质因数的方法分析
Dec 14 Python
Python3实现发送QQ邮件功能(html)
Dec 15 Python
python批量导入数据进Elasticsearch的实例
May 30 Python
python根据url地址下载小文件的实例
Dec 18 Python
Python实现合并两个有序链表的方法示例
Jan 31 Python
在Python 中同一个类两个函数间变量的调用方法
Jan 31 Python
不到40行代码用Python实现一个简单的推荐系统
May 10 Python
使用Python快乐学数学Github万星神器Manim简介
Aug 07 Python
Python 删除List元素的三种方法remove、pop、del
Nov 16 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 之 写时复制介绍(Copy On Write)
2014/05/13 PHP
PHP解析RSS的方法
2015/03/05 PHP
php中smarty变量修饰用法实例分析
2015/06/11 PHP
通过php动态传数据到highcharts
2017/04/05 PHP
详细解读php的命名空间(一)
2018/02/21 PHP
用js实现的仿sohu博客更换页面风格(简单版)
2007/03/22 Javascript
javascript arguments 传递给函数的隐含参数
2009/08/21 Javascript
div当滚动到页面顶部的时候固定在顶部实例代码
2013/05/27 Javascript
javascript模拟地球旋转效果代码实例
2013/12/02 Javascript
深入理解JavaScript是如何实现继承的
2013/12/12 Javascript
javascript实现iframe框架延时加载的方法
2014/10/30 Javascript
jQuery.prop() 使用详解
2015/07/19 Javascript
jQuery实现高亮显示网页关键词的方法
2015/08/07 Javascript
javascript如何写热点图
2015/12/08 Javascript
基于jQuery实现二级下拉菜单效果
2016/02/01 Javascript
BootStrap和jQuery相结合实现可编辑表格
2016/04/21 Javascript
JavaScript动态检验密码强度的实现方法
2016/11/09 Javascript
JavaScript运动框架 多值运动(四)
2017/05/18 Javascript
Node.js学习之查询字符串解析querystring详解
2017/09/28 Javascript
Vue Element 分组+多选+可搜索Select选择器实现示例
2018/07/23 Javascript
JavaScript实现的级联算法示例【省市二级联动功能】
2018/12/25 Javascript
微信h5静默和非静默授权获取用户openId的方法和步骤
2020/06/08 Javascript
详解python中init方法和随机数方法
2019/03/13 Python
python网络应用开发知识点浅析
2019/05/28 Python
Django+uni-app实现数据通信中的请求跨域的示例代码
2019/10/12 Python
python实现井字棋小游戏
2020/03/04 Python
pycharm中导入模块错误时提示Try to run this command from the system terminal
2020/03/26 Python
Python实现七个基本算法的实例代码
2020/10/08 Python
python爬虫多次请求超时的几种重试方法(6种)
2020/12/01 Python
亚洲颇具影响力的男性在线购物零售商:His
2019/11/24 全球购物
2014年统计工作总结
2014/11/21 职场文书
先进基层党组织事迹材料
2014/12/25 职场文书
简历自荐信范文
2015/03/09 职场文书
博士生专家推荐信
2015/03/25 职场文书
情感电台广播稿
2015/08/18 职场文书
会计继续教育培训心得体会
2016/01/19 职场文书