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实现随机密码字典生成器示例
Apr 09 Python
举例讲解Python中装饰器的用法
Apr 27 Python
Python的Django框架中TEMPLATES项的设置教程
May 29 Python
python检测是文件还是目录的方法
Jul 03 Python
python字典DICT类型合并详解
Aug 17 Python
python执行CMD指令,并获取返回的方法
Dec 19 Python
PyCharm设置每行最大长度限制的方法
Jan 16 Python
详解Python的数据库操作(pymysql)
Apr 04 Python
Python通过TensorFLow进行线性模型训练原理与实现方法详解
Jan 15 Python
python中with用法讲解
Feb 07 Python
Keras自定义实现带masking的meanpooling层方式
Jun 16 Python
Django --Xadmin 判断登录者身份实例
Jul 03 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
SONY ICF-F10中波修复记
2021/03/02 无线电
PHP字符串比较函数strcmp()和strcasecmp()使用总结
2014/11/19 PHP
老司机传授Ubuntu下Apache+PHP+MySQL环境搭建攻略
2016/03/20 PHP
php实现HTML实体编号与非ASCII字符串相互转换类实例
2016/11/02 PHP
php 读写json文件及修改json的方法
2018/03/07 PHP
基于JavaScript实现继承机制之构造函数方法对象冒充的使用详解
2013/05/07 Javascript
offsetHeight在OnLoad中获取为0的现象
2013/07/22 Javascript
使用jQuery获得内容以及内容的属性
2015/02/26 Javascript
jquery动感漂浮导航菜单代码分享
2020/04/15 Javascript
vue在使用ECharts时的异步更新和数据加载详解
2017/11/22 Javascript
React Native 自定义下拉刷新上拉加载的列表的示例
2018/03/01 Javascript
React 项目迁移 Webpack Babel7的实现
2018/09/12 Javascript
深入浅出vue图片路径的实现
2019/09/04 Javascript
layer弹出层自定义提交取消按钮的例子
2019/09/10 Javascript
Vue解决echart在element的tab切换时显示不正确问题
2020/08/03 Javascript
vuex的数据渲染与修改浅析
2020/11/26 Vue.js
Python实现冒泡,插入,选择排序简单实例
2014/08/18 Python
在Python的Flask框架下收发电子邮件的教程
2015/04/21 Python
Django1.7+python 2.78+pycharm配置mysql数据库
2016/10/09 Python
python里 super类的工作原理详解
2019/06/19 Python
解决python执行不输出系统命令弹框的问题
2019/06/24 Python
django框架两个使用模板实例
2019/12/11 Python
新加坡最受追捧的体验平台:Hapz
2018/01/01 全球购物
英国手机零售商:Metrofone
2019/03/18 全球购物
请介绍一下Ant
2016/07/22 面试题
简单说下OSPF的操作过程
2014/08/13 面试题
人力资源部门的主要职能
2014/02/22 职场文书
《那片绿绿的爬山虎》教学反思
2014/02/27 职场文书
承诺书格式范文
2014/06/03 职场文书
生产车间标语
2014/06/11 职场文书
英语分层教学实施方案
2014/06/15 职场文书
硕士生找工作求职信
2014/07/05 职场文书
活动总结范文
2014/08/30 职场文书
小学师德师风整改措施
2014/10/27 职场文书
Python import模块的缓存问题解决方案
2021/06/02 Python
html5实现点击弹出图片功能
2021/07/16 HTML / CSS