Python读取JSON数据操作实例解析

作者:人生&不将就 时间:2021-08-11 18:27:34 

读写 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 可序列化的。

如果你想序列化对象实例,你可以提供一个函数,它的输入是一个实例,返回一个可序列化的字典。

来源:https://www.cnblogs.com/lcljyb/p/12895019.html

标签:Python,读取,JSON,操作
0
投稿

猜你喜欢

  • LINUX下Oracle数据导入导出的方法详解

    2023-07-06 15:20:32
  • 原生js仿浏览器滚动条效果

    2024-04-10 16:09:33
  • 解决MySql8.0 查看事务隔离级别报错的问题

    2024-01-17 23:14:01
  • MySQL高级查询方法之记录查询

    2010-06-20 14:48:00
  • 用Dreamweaver MX轻松操作表格

    2009-05-29 18:41:00
  • Python实现12306火车票抢票系统

    2023-09-30 01:33:31
  • php中json_decode()和json_encode()的使用方法

    2023-06-11 16:31:56
  • Python使用lambda表达式对字典排序操作示例

    2022-12-26 06:27:46
  • 解决vue2.x中数据渲染以及vuex缓存的问题

    2023-07-02 16:59:24
  • Python实现字符串格式化的方法小结

    2022-08-14 11:04:02
  • 使用Python第三方库发送电子邮件的示例代码

    2021-07-24 11:17:36
  • MySQL索引概念及七种索引类型分享介绍

    2024-01-23 03:55:27
  • 如何在网页中制作虚线表格

    2010-10-20 20:07:00
  • python读取浮点数和读取文本文件示例

    2022-10-31 16:03:38
  • PHP如何从txt文件中读取数据详解

    2023-11-15 02:37:32
  • Python基于pyecharts实现关联图绘制

    2021-04-08 12:05:45
  • 在Django的模型中执行原始SQL查询的方法

    2022-12-21 17:24:40
  • python热力图实现简单方法

    2023-10-28 06:14:41
  • Javascript中各种trim的实现详细解析

    2024-04-18 10:55:04
  • 如何使用图片精灵优化你的网站

    2009-07-21 11:35:00
  • asp之家 网络编程 m.aspxhome.com