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使用paramiko模块实现ssh远程登陆上传文件并执行
Jan 27 Python
使用python解析xml成对应的html示例分享
Apr 02 Python
python中的字典使用分享
Jul 31 Python
Python生成密码库功能示例
May 23 Python
解决Python3中的中文字符编码的问题
Jul 18 Python
Python数据报表之Excel操作模块用法分析
Mar 11 Python
我喜欢你 抖音表白程序python版
Apr 07 Python
python把转列表为集合的方法
Jun 28 Python
pygame实现成语填空游戏
Oct 29 Python
django 数据库返回queryset实现封装为字典
May 19 Python
详解python定时简单爬取网页新闻存入数据库并发送邮件
Nov 27 Python
详解MindSpore自定义模型损失函数
Jun 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
PHP中使用php5-ffmpeg撷取视频图片实例
2015/01/07 PHP
解决form中action属性后面?传递参数 获取不到的问题
2017/07/21 PHP
在 Laravel 中 “规范” 的开发短信验证码发送功能
2017/10/26 PHP
Laravel 验证码认证学习记录小结
2019/12/20 PHP
JS继承 笔记
2011/07/13 Javascript
jQuery Tools tab使用介绍
2012/07/14 Javascript
jQuery内部原理和实现方式浅析
2015/02/03 Javascript
jQuery判断对象是否存在的方法
2015/02/05 Javascript
TinyMCE提交AjaxForm获取不到数据的解决方法
2015/03/05 Javascript
JavaScript仿支付宝密码输入框
2015/12/29 Javascript
jQuery实现的倒计时效果实例小结
2016/04/16 Javascript
Javascript将字符串日期格式化为yyyy-mm-dd的方法
2016/10/27 Javascript
详解JavaScript调用栈、尾递归和手动优化
2017/06/03 Javascript
如何重置vue打印变量的显示方式
2017/12/06 Javascript
使用koa-log4管理nodeJs日志笔记的使用方法
2018/11/30 NodeJs
详解Vue webapp项目通过HBulider打包原生APP(vue+webpack+HBulider)
2019/02/02 Javascript
微信小程序 导入图标实现过程详解
2019/10/11 Javascript
Python  __getattr__与__setattr__使用方法
2008/09/06 Python
详解如何用OpenCV + Python 实现人脸识别
2017/10/20 Python
python3实现二叉树的遍历与递归算法解析(小结)
2019/07/03 Python
在自动化中用python实现键盘操作的方法详解
2019/07/19 Python
python GUI库图形界面开发之PyQt5计数器控件QSpinBox详细使用方法与实例
2020/02/28 Python
纯css3实现的竖形无限级导航
2014/12/10 HTML / CSS
使用CSS3制作饼状旋转载入效果的实例
2015/06/23 HTML / CSS
关于h5中的fetch方法解读(小结)
2017/11/15 HTML / CSS
测绘工程个人的自我评价
2013/11/23 职场文书
思想专业自荐信范文
2013/12/25 职场文书
教学个人的自我评价分享
2014/02/16 职场文书
学校欢迎标语
2014/06/18 职场文书
2014年国庆节活动总结
2014/08/26 职场文书
维护民族团结演讲稿
2014/08/27 职场文书
2014年学校教学工作总结
2014/12/06 职场文书
2019年英语版感谢信(8篇)
2019/09/29 职场文书
导游词之包公祠
2019/11/25 职场文书
Python爬取科目四考试题库的方法实现
2021/03/30 Python
Python3接口性能测试实例代码
2021/06/20 Python