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
深入理解Django的中间件middleware
Mar 14 Python
python+POP3实现批量下载邮件附件
Jun 19 Python
python pandas消除空值和空格以及 Nan数据替换方法
Oct 30 Python
python linecache 处理固定格式文本数据的方法
Jan 08 Python
Python设计模式之装饰模式实例详解
Jan 21 Python
Python flask框架post接口调用示例
Jul 03 Python
django多种支付、并发订单处理实例代码
Dec 13 Python
Python实现密码薄文件读写操作
Dec 16 Python
python时间与Unix时间戳相互转换方法详解
Feb 13 Python
Python __slots__的使用方法
Nov 15 Python
python编写函数注意事项总结
Mar 29 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
phpmyadmin3 安装配置图解教程
2012/03/29 PHP
探讨:如何使用PhpDocumentor生成文档
2013/06/25 PHP
php打印一个边长为N的实心和空心菱型的方法
2015/03/02 PHP
什么是PHP文件?如何打开PHP文件?
2017/06/27 PHP
详解php中curl返回false的解决办法
2019/03/18 PHP
9个JavaScript评级/投票插件
2010/01/18 Javascript
js toFixed()方法的重写实现精度的统一
2014/03/06 Javascript
在AngularJS中使用jQuery的zTree插件的方法
2016/04/21 Javascript
JavaScript String 对象常用方法详解
2016/05/13 Javascript
ReactNative页面跳转实例代码
2016/09/27 Javascript
基于EasyUI的基础之上实现树形功能菜单
2017/06/28 Javascript
bootstrap datetimepicker控件位置异常的解决方法
2017/11/23 Javascript
微信小程序使用wxParse解析html的方法教程
2018/07/06 Javascript
webpack4 CSS Tree Shaking的使用
2018/09/03 Javascript
使用next.js开发网址缩短服务的方法
2020/06/17 Javascript
小程序表单认证布局及验证详解
2020/06/19 Javascript
[03:28]2014DOTA2国际邀请赛 走近EG战队天才中单Arteezy
2014/07/12 DOTA
使用python开发vim插件及心得分享
2014/11/04 Python
python从入门到精通(DAY 1)
2015/12/20 Python
python如何获取列表中每个元素的下标位置
2019/07/01 Python
让你相见恨晚的十个Python骚操作
2020/11/18 Python
python抢购软件/插件/脚本附完整源码
2021/03/04 Python
纯CSS3实现图片无间断轮播效果
2016/08/25 HTML / CSS
美国知名玩具品牌:Melissa & Doug
2016/08/16 全球购物
巴西男士个人护理产品商店:SHOP4MEN
2017/08/07 全球购物
英国当代时尚和街头服饰店:18montrose
2018/12/15 全球购物
西班牙鞋子和箱包在线销售网站:zapatos.es
2020/02/17 全球购物
北京泡泡网网络有限公司.net面试题
2012/07/17 面试题
怎样写好自荐信和推荐信
2013/12/26 职场文书
科技开发中心办公室主任岗位责任制
2014/02/10 职场文书
母亲节感恩寄语
2014/02/21 职场文书
党员反对四风问题思想汇报
2014/09/12 职场文书
工作检讨书大全
2015/01/26 职场文书
《去年的树》教学反思
2016/02/18 职场文书
有关保护环境的宣传标语100条
2019/08/07 职场文书
Python捕获、播放和保存摄像头视频并提高视频清晰度和对比度
2022/04/14 Python