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 09 Python
在Linux系统上通过uWSGI配置Nginx+Python环境的教程
Dec 25 Python
Python 爬虫学习笔记之正则表达式
Sep 21 Python
Python实现将16进制字符串转化为ascii字符的方法分析
Jul 21 Python
Python使用requests发送POST请求实例代码
Jan 25 Python
python操作redis方法总结
Jun 06 Python
树莓派实现移动拍照
Jun 22 Python
python使用Qt界面以及逻辑实现方法
Jul 10 Python
Python实现PyPDF2处理PDF文件的方法示例
Sep 25 Python
Python3常用内置方法代码实例
Nov 18 Python
python识别验证码图片实例详解
Feb 17 Python
pycharm实现print输出保存到txt文件
Jun 01 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编写一个简单的路由类
2011/04/13 PHP
php eval函数用法 PHP中eval()函数小技巧
2012/10/31 PHP
递归实现php数组转xml的代码分享
2015/05/14 PHP
详解php比较操作符的安全问题
2015/12/03 PHP
PHP7 参数处理机制修改
2021/03/09 PHP
ext combox 下拉框不出现自动提示,自动选中的解决方法
2010/02/24 Javascript
js switch case default 的用法示例介绍
2013/10/23 Javascript
js浮点数保留两位小数点示例代码(四舍五入)
2013/12/26 Javascript
jQuery中[attribute!=value]选择器用法实例
2014/12/31 Javascript
javascript中闭包(Closure)详解
2016/01/06 Javascript
动态的9*9乘法表效果的实现代码
2016/05/16 Javascript
JavaScript操作表单实例讲解(上)
2016/06/20 Javascript
Javascript中常用类型的格式化方法小结
2016/12/26 Javascript
原生js实现中奖信息无间隙滚动效果
2017/01/18 Javascript
react实现pure render时bind(this)隐患需注意!
2017/03/09 Javascript
开源一个微信小程序仪表盘组件过程解析
2019/07/30 Javascript
vue实现登录拦截
2020/06/29 Javascript
跟老齐学Python之编写类之三子类
2014/10/11 Python
安装Python和pygame及相应的环境变量配置(图文教程)
2017/06/04 Python
用python写扫雷游戏实例代码分享
2018/05/27 Python
python射线法判断一个点在图形区域内外
2019/06/28 Python
python环境搭建和pycharm的安装配置及汉化详细教程(零基础小白版)
2020/08/19 Python
正宗的日本零食和糖果订阅盒:Bokksu
2019/11/21 全球购物
职高毕业生自我鉴定
2013/10/21 职场文书
护理学专业推荐信
2013/12/03 职场文书
农村婚礼证婚词
2014/01/08 职场文书
服务生自我鉴定
2014/01/22 职场文书
中药专业自荐信范文
2014/03/18 职场文书
服务承诺书范文
2014/05/19 职场文书
物理分数没达标检讨书
2014/09/13 职场文书
超市开店计划书
2014/09/15 职场文书
民主评议政风行风整改方案
2014/09/17 职场文书
司法局群众路线教育实践活动整改措施思想汇报
2014/10/13 职场文书
2014年前台文员工作总结
2014/12/08 职场文书
2016年第32个教师节致辞
2015/11/26 职场文书
详解JAVA中的OPTIONAL
2021/06/14 Java/Android