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的类实例属性访问规则探讨
Jan 30 Python
详解Python中open()函数指定文件打开方式的用法
Jun 04 Python
python获取当前运行函数名称的方法实例代码
Apr 06 Python
python kmeans聚类简单介绍和实现代码
Feb 23 Python
使用python生成目录树
Mar 29 Python
selenium跳过webdriver检测并模拟登录淘宝
Jun 12 Python
python绘制已知点的坐标的直线实例
Jul 04 Python
python wav模块获取采样率 采样点声道量化位数(实例代码)
Jan 22 Python
keras中模型训练class_weight,sample_weight区别说明
May 23 Python
Keras框架中的epoch、bacth、batch size、iteration使用介绍
Jun 10 Python
Pycharm中配置远程Docker运行环境的教程图解
Jun 11 Python
Python音乐爬虫完美绕过反爬
Aug 30 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
基于mysql的论坛(3)
2006/10/09 PHP
Adodb的十个实例(清晰版)
2006/12/31 PHP
Laravel 实现密码重置功能
2018/02/23 PHP
文字幻灯片
2006/06/26 Javascript
JS之小练习代码
2008/10/12 Javascript
走出JavaScript初学困境—js初学
2008/12/29 Javascript
nodejs分页类代码分享
2014/06/17 NodeJs
浅谈javascript中自定义模版
2015/01/29 Javascript
分享一个自己写的简单的javascript分页组件
2015/02/15 Javascript
jquery实现鼠标滑过显示二级下拉菜单效果
2015/08/24 Javascript
jQuery插件FusionCharts绘制的2D双柱状图效果示例【附demo源码】
2017/05/13 jQuery
jquery加载单文件vue组件的方法
2017/06/20 jQuery
微信小程序实现拖拽功能
2019/09/26 Javascript
JavaScript 引用类型实例详解【数组、对象、严格模式等】
2020/05/13 Javascript
Vue解决移动端弹窗滚动穿透问题
2020/12/15 Vue.js
JS创建自定义对象的六种方法总结
2020/12/15 Javascript
[56:42]完美世界DOTA2联赛循环赛 Matador vs Forest 第二场 11.06
2020/11/06 DOTA
深入Python解释器理解Python中的字节码
2015/04/01 Python
Python 找到列表中满足某些条件的元素方法
2018/06/26 Python
Python实现输入二叉树的先序和中序遍历,再输出后序遍历操作示例
2018/07/27 Python
Python高级特性之闭包与装饰器实例详解
2019/11/19 Python
CSS3实现头像旋转效果
2017/03/13 HTML / CSS
整理HTML5中支持的URL编码与字符编码
2016/02/23 HTML / CSS
顶级宝石首饰网络零售商:Angara
2016/10/25 全球购物
世界上最好的帽子:Tilley
2016/11/27 全球购物
俄罗斯街头服装品牌:Black Star Wear
2017/03/01 全球购物
Napapijri西班牙在线商店:夹克、外套、运动衫等
2020/11/05 全球购物
幼儿园五一活动方案
2014/02/07 职场文书
党员自我评价2015
2015/03/03 职场文书
投标售后服务承诺书
2015/04/29 职场文书
环保守法证明
2015/06/24 职场文书
python将图片转为矢量图的方法步骤
2021/03/30 Python
一文搞懂redux在react中的初步用法
2021/06/09 Javascript
浅谈Redis跟MySQL的双写问题解决方案
2022/02/24 Redis
vue自定义右键菜单之全局实现
2022/04/09 Vue.js
Java的Object类的九种方法
2022/04/13 Java/Android