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实现计算资源图标crc值的方法
Oct 05 Python
python连接字符串的方法小结
Jul 13 Python
详解Python函数可变参数定义及其参数传递方式
Aug 02 Python
pandas object格式转float64格式的方法
Apr 10 Python
Python实现求一个集合所有子集的示例
May 04 Python
对PyQt5中树结构的实现方法详解
Jun 17 Python
python实现集中式的病毒扫描功能详解
Jul 09 Python
Python基于Opencv来快速实现人脸识别过程详解(完整版)
Jul 11 Python
python 三元运算符使用解析
Sep 16 Python
python GUI库图形界面开发之PyQt5日期时间控件QDateTimeEdit详细使用方法与实例
Feb 27 Python
Django框架models使用group by详解
Mar 11 Python
Linux系统下升级pip的完整步骤
Jan 31 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下获取Discuz论坛登录用户名、用户组、用户ID等信息的实现代码
2010/12/29 PHP
php使用curl访问https示例分享
2014/01/17 PHP
php+ajax 实现输入读取数据库显示匹配信息
2015/10/08 PHP
PHP实现对数组分页处理实例详解
2017/02/07 PHP
PHP实现将几张照片拼接到一起的合成图片功能【便于整体打印输出】
2017/11/14 PHP
jQuery代码优化之基本事件
2011/11/01 Javascript
Javascript自定义排序 node运行 实例
2013/06/05 Javascript
用html5 js实现点击一个按钮达到浏览器全屏效果
2014/05/28 Javascript
在JS中操作时间之getUTCMilliseconds()方法的使用
2015/06/10 Javascript
基于Javascript实现弹出页面效果
2016/01/01 Javascript
基于bootstrap风格的弹框插件
2016/12/28 Javascript
使用get方式提交表单在地址栏里面不显示提交信息
2017/02/21 Javascript
Vue通过ref父子组件拿值方法
2018/09/12 Javascript
vue+vuex+json-seiver实现数据展示+分页功能
2019/04/11 Javascript
一文快速了解JQuery中的AJAX
2019/05/31 jQuery
ElementUI之Message功能拓展详解
2019/10/18 Javascript
vue axios请求成功却进入catch的原因分析
2020/09/08 Javascript
python小技巧之批量抓取美女图片
2014/06/06 Python
Python的Django框架中的数据过滤功能
2015/07/17 Python
在Django中编写模版节点及注册标签的方法
2015/07/20 Python
Python3 操作符重载方法示例
2017/11/23 Python
Python基于列表模拟堆栈和队列功能示例
2018/01/05 Python
python3 selenium 切换窗口的几种方法小结
2018/05/21 Python
解决python3.5 正常安装 却不能直接使用Tkinter包的问题
2019/02/22 Python
Django web框架使用url path name详解
2019/04/29 Python
Python Django的安装配置教程图文详解
2019/07/17 Python
python标识符命名规范原理解析
2020/01/10 Python
HTML5中div、article、section的区别及使用介绍
2013/08/14 HTML / CSS
用HTML5制作一个简单的桌球游戏的教程
2015/05/12 HTML / CSS
美国婴儿用品及配件购买网站:Munchkin
2019/04/03 全球购物
《小松树和大松树》教学反思
2014/02/20 职场文书
马智宇结婚主持词
2014/04/01 职场文书
预备党员群众路线教育实践活动思想汇报2014
2014/10/25 职场文书
go语言中GOPATH GOROOT的作用和设置方式
2021/05/05 Golang
MySQL查询学习之基础查询操作
2021/05/08 MySQL
mysql sock文件存储了什么信息
2022/07/15 MySQL