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中的迭代器、生成器与列表解析用法
Mar 20 Python
快速入门python学习笔记
Dec 06 Python
Python中的默认参数实例分析
Jan 29 Python
Python实现的FTP通信客户端与服务器端功能示例
Mar 28 Python
Python实现聊天机器人的示例代码
Jul 09 Python
python 利用文件锁单例执行脚本的方法
Feb 19 Python
六行python代码的爱心曲线详解
May 17 Python
Python3常见函数range()用法详解
Dec 30 Python
使用npy转image图像并保存的实例
Jul 01 Python
python 使用三引号时容易犯的小错误
Oct 21 Python
基于Python爬取搜狐证券股票过程解析
Nov 18 Python
python 统计代码耗时的几种方法分享
Apr 02 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/02 无线电
ASP和PHP都是可以删除自身的
2007/04/09 PHP
php实现的在线人员函数库
2008/04/09 PHP
提示Trying to clone an uncloneable object of class Imagic的解决
2011/10/27 PHP
php上传文件并存储到mysql数据库的方法
2015/03/16 PHP
PHP实现微信JS-SDK接口选择相册及拍照并上传的方法
2016/12/05 PHP
Ajax+PHP实现的分类列表框功能示例
2019/02/11 PHP
javascript编程起步(第七课)
2007/02/27 Javascript
javascript 数组的方法集合
2008/06/05 Javascript
对JavaScript的eval()中使用函数的进一步讨论
2008/07/26 Javascript
JS 两日期相减,获得天数的小例子(兼容IE,FF)
2013/07/01 Javascript
jquery单行文字向上滚动效果示例
2014/03/06 Javascript
jquery分页对象使用示例
2014/04/01 Javascript
angularJs关于指令的一些冷门属性详解
2016/10/24 Javascript
jQuery中animate()的使用方法及解决$(”body“).animate({“scrollTop”:top})不被Firefox支持的问题
2017/04/04 jQuery
详解Layer弹出层样式
2017/08/21 Javascript
浅析从vue源码看观察者模式
2018/01/29 Javascript
修改npm全局安装模式的路径方法
2018/05/15 Javascript
vue点击自增和求和的实例代码
2019/11/06 Javascript
Vue 的双向绑定原理与用法揭秘
2020/05/06 Javascript
基于js实现数组相邻元素上移下移
2020/05/19 Javascript
Python 调用Java实例详解
2017/06/02 Python
python中装饰器级连的使用方法示例
2017/09/29 Python
python pandas 对时间序列文件处理的实例
2018/06/22 Python
Python+pandas计算数据相关系数的实例
2018/07/03 Python
Python 一句话生成字母表的方法
2019/01/02 Python
Python用字典构建多级菜单功能
2019/07/11 Python
django admin组件使用方法详解
2019/07/19 Python
Python类和实例的属性机制原理详解
2020/03/21 Python
Python就将所有的英文单词首字母变成大写
2021/02/12 Python
求职简历自荐信范文
2013/10/21 职场文书
大学军训自我鉴定
2013/12/15 职场文书
九华山导游词
2015/02/03 职场文书
公司表扬信格式
2015/05/04 职场文书
2016年党校科级干部培训班学习心得体会
2016/01/06 职场文书
Win11自动黑屏怎么办 Win11自动黑屏设置教程
2022/07/15 数码科技