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类继承用法实例分析
Oct 10 Python
python实现爬虫统计学校BBS男女比例(一)
Dec 31 Python
浅谈python和C语言混编的几种方式(推荐)
Sep 27 Python
python如何将图片转换为字符图片
Aug 19 Python
python中ASCII码字符与int之间的转换方法
Jul 09 Python
Python QQBot库的QQ聊天机器人
Jun 19 Python
Python如何使用BeautifulSoup爬取网页信息
Nov 26 Python
在django项目中导出数据到excel文件并实现下载的功能
Mar 13 Python
Python基于network模块制作电影人物关系图
Jun 19 Python
Python同时迭代多个序列的方法
Jul 28 Python
Python matplotlib多个子图绘制整合
Apr 13 Python
Python序列化模块JSON与Pickle
Jun 05 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
如何选购合适的收音机
2021/03/01 无线电
php数组函数序列之end() - 移动数组内部指针到最后一个元素,并返回该元素的值
2011/10/31 PHP
php递归删除指定文件夹的方法小结
2015/04/20 PHP
php实现的xml操作类
2016/01/15 PHP
thinkphp3.x中session方法的用法分析
2016/05/20 PHP
PDO::commit讲解
2019/01/27 PHP
PHP进阶学习之Geo的地图定位算法详解
2019/06/19 PHP
Laravel使用模型实现like模糊查询的例子
2019/10/24 PHP
IE和firefox浏览器的event事件兼容性汇总
2009/12/06 Javascript
javascript实现的一个带下拉框功能的文本框
2014/05/08 Javascript
javascript修改图片src的方法
2015/01/27 Javascript
jQuery实现查找链接文字替换属性的方法
2016/06/27 Javascript
详解javascript获取url信息的常见方法
2016/12/19 Javascript
js实现本地图片文件拖拽效果
2017/07/18 Javascript
详解webpack进阶之loader篇
2017/08/23 Javascript
使用webpack打包koa2 框架app
2018/02/02 Javascript
Vue的土著指令和自定义指令实例详解
2018/02/04 Javascript
JavaScript中发出HTTP请求最常用的方法
2018/07/12 Javascript
Vue中使用sass实现换肤功能
2018/09/07 Javascript
详解在不使用ssr的情况下解决Vue单页面SEO问题
2018/11/08 Javascript
JavaScript直接调用函数与call调用的区别实例分析
2020/05/22 Javascript
详解vue3.0 diff算法的使用(超详细)
2020/07/01 Javascript
python使用paramiko模块实现ssh远程登陆上传文件并执行
2014/01/27 Python
在SQLite-Python中实现返回、查询中文字段的方法
2019/07/17 Python
理肤泉加拿大官网:La Roche-Posay加拿大
2018/07/06 全球购物
js实现弹框效果
2021/03/24 Javascript
给老婆的搞笑检讨书
2014/01/12 职场文书
服务生自我鉴定
2014/01/22 职场文书
《在大海中永生》教学反思
2014/02/24 职场文书
学习雷锋精神心得体会范文
2014/03/12 职场文书
党校毕业心得体会
2014/09/13 职场文书
中班教师个人总结
2015/02/05 职场文书
2019年怎样才能撰写出优秀的自荐信
2019/03/25 职场文书
Html5页面播放M4a音频文件
2021/03/30 HTML / CSS
Oracle数据库中通用的函数实例详解
2022/03/25 Oracle
Nginx配置之禁止指定IP访问
2022/05/02 Servers