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中sets模块的用法实例
Sep 30 Python
Python爬豆瓣电影实例
Feb 23 Python
Python 中字符串拼接的多种方法
Jul 30 Python
对Python3+gdal 读取tiff格式数据的实例讲解
Dec 04 Python
对python for 文件指定行读写操作详解
Dec 29 Python
Python设计模式之简单工厂模式实例详解
Jan 22 Python
详解pytorch 0.4.0迁移指南
Jun 16 Python
python动态进度条的实现代码
Jul 03 Python
Python创建数字列表的示例
Nov 28 Python
Python vtk读取并显示dicom文件示例
Jan 13 Python
python 检测图片是否有马赛克
Dec 01 Python
python os.rename实例用法详解
Dec 06 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 FATAL ERROR: CALL TO UNDEFINED FUNCTION BCMUL()解决办法
2014/05/04 PHP
PHP中执行cmd命令的方法
2014/10/11 PHP
php正则表达式验证(邮件地址、Url地址、电话号码、邮政编码)
2016/03/14 PHP
php实现的http请求封装示例
2016/11/08 PHP
PHP 500报错的快速解决方法
2016/12/14 PHP
javascript动态改变img的src属性图片不显示的解决方法
2010/10/20 Javascript
js数组方法扩展实现数组统计函数
2014/04/09 Javascript
nodejs教程之入门
2014/11/21 NodeJs
10条建议帮助你创建更好的jQuery插件
2015/05/18 Javascript
JS实现部分HTML固定页面顶部随屏滚动效果
2015/12/24 Javascript
纯JS实现表单验证实例
2016/12/24 Javascript
JSON 数据详解及实例代码分析
2017/01/20 Javascript
js 原生判断内容区域是否滚动到底部的实例代码
2017/11/15 Javascript
vue js秒转天数小时分钟秒的实例代码
2018/08/08 Javascript
cocos2dx+lua实现橡皮擦功能
2018/12/20 Javascript
一文读懂ES7中的javascript修饰器
2019/05/06 Javascript
Vue表单之v-model绑定下拉列表功能
2019/05/14 Javascript
详解vue-cli3多页应用改造
2019/06/04 Javascript
微信小程序批量监听输入框对按钮样式进行控制的实现代码
2019/10/12 Javascript
JavaScript ECMA-262-3 深入解析(二):变量对象实例详解
2020/04/25 Javascript
JS的时间格式化和时间戳转换函数示例详解
2020/07/27 Javascript
[01:19:11]Ti4 循环赛第二日 NaVi.us vs iG
2014/07/11 DOTA
给Python中的MySQLdb模块添加超时功能的教程
2015/05/05 Python
利用Python实现网络测试的脚本分享
2017/05/26 Python
python中map的基本用法示例
2018/09/10 Python
win10下tensorflow和matplotlib安装教程
2018/09/19 Python
如何分离django中的媒体、静态文件和网页
2019/11/12 Python
详解python logging日志传输
2020/07/01 Python
python实现图像外边界跟踪操作
2020/07/13 Python
Python自动化之UnitTest框架实战记录
2020/09/08 Python
全面介绍python中很常用的单元测试框架unitest
2020/12/14 Python
Linux中如何设置Java环境变量(Ubuntu)
2016/07/24 面试题
精伦电子Java笔试题
2013/01/16 面试题
端午节活动策划方案
2014/03/09 职场文书
读书之星事迹材料
2014/05/12 职场文书
mysql多表查询-笔记七
2021/04/05 MySQL