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
投稿

猜你喜欢

  • 对Python中 \\r, \\n, \\r\\n的彻底理解

    2022-09-14 07:00:15
  • Python的Pillow库进行图像文件处理(图文详解)

    2023-10-04 04:02:23
  • antd项目实现彩蛋效果的详细代码

    2023-09-14 12:51:20
  • 透彻掌握ASP分页技术

    2009-03-09 18:26:00
  • python实现AES加密与解密

    2022-12-08 08:18:40
  • WEB前端开发经验总结之实战篇

    2008-06-12 12:49:00
  • Python 聊聊socket中的listen()参数(数字)到底代表什么

    2022-10-17 00:49:25
  • 对fieldset和legend的默认样式一点分析

    2008-07-02 12:56:00
  • 在SQL Server数据库开发中的十大问题

    2008-12-18 14:39:00
  • web标准知识——美化段落文本 Ⅱ

    2008-07-22 12:12:00
  • Python使用当前时间、随机数产生一个唯一数字的方法

    2022-02-10 14:57:07
  • 初识Firebug 全文 — firebug的使用

    2007-10-23 12:54:00
  • 使用javascript+xml技术实现分页浏览

    2008-05-29 13:49:00
  • python3 selenium自动化测试 强大的CSS定位方法

    2021-09-13 01:41:13
  • Windows Server 2008之数据安全保护

    2008-12-04 12:49:00
  • 使用AJAX的一个简单的例子

    2007-09-21 17:55:00
  • CSS设计之如何让数字字母自动换行

    2007-10-19 15:12:00
  • IE6模拟max-width对图片缩放

    2008-03-16 14:32:00
  • php中session_unset与session_destroy的区别分析

    2023-07-17 21:34:56
  • MySQL的添加用户的两种方法

    2012-01-29 17:50:10
  • asp之家 网络编程 m.aspxhome.com