当前位置: 首页 > news >正文

json模块(高维数据的存储与读取)

json模块是 Python 标准库中的一个模块,用于处理 JSON(JavaScript Object Notation)格式的数据。JSON是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。模块提供了在 Python 中进行 JSON 编码(序列化)和解码(反序列化)的功能。json

以下是 json模块的主要函数和用法:

1.json.dumps(obj, *, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, default=None, sort_keys=False, **kw)

将 Python 对象 obj转换为 JSON 格式的字符串。

这些参数提供了在序列化过程中控制行为的灵活性,可以根据需要选择适当的参数值。

  • obj:必需参数,要序列化为 JSON 字符串的 Python 对象。通常是字典、列表、元组等可序列化的对象。

  • skipkeys(默认为 False):如果设置为 True,在序列化字典对象时跳过非字符串键。如果字典包含非字符串键,则会引发 。默认情况下,这个参数是 False,表示不跳过非字符串键。TypeError

  • ensure_ascii(默认为 True):如果设置为 True,所有非 ASCII 字符将转义为 ASCII。如果设置为 False,则允许非 ASCII 字符原样输出。默认情况下,这个参数是 True。

  • check_circular(默认为 True):如果设置为 True,检查循环引用(例如,一个对象是另一个对象的属性,而后者又是前者的属性)。如果检测到循环引用,会引发 。如果设置为 False,将不会检查循环引用,但可能导致无限递归和堆栈溢出。默认情况下,这个参数是 True。ValueError

  • allow_nan(默认为 True):如果设置为 True,允许 JSON 中的 NaN、Infinity 和 -Infinity。如果设置为 False,将不允许这些特殊的浮点数值,而是引发 。默认情况下,这个参数是 True。ValueError

  • cls:用于指定自定义的 JSON 编码器类。这个参数应该是一个 JSONEncoder 的子类。默认情况下,使用 类进行编码。json.JSONEncoder

  • indent:用于指定缩进的空格数,使生成的 JSON 字符串更易读。默认情况下,不进行缩进,即不进行格式化。

  • separators:用于指定不同部分之间的分隔符,应该是一个包含两个字符的元组,例如 。第一个字符用于分隔项之间的间隔,第二个字符用于分隔键值对之间的间隔。默认情况下,使用 和 作为分隔符。(',', ':'),:

  • default:用于指定一个函数,用于将非序列化的对象转换为可序列化的类型。例如,可以指定一个函数来处理自定义对象的序列化。默认情况下,如果遇到无法序列化的对象类型,则引发 。TypeError

  • sort_keys(默认为 False):如果设置为 True,在输出 JSON 字符串时对键进行排序。默认情况下,这个参数是 False,表示不对键进行排序。

2.json.dump(obj, fp, *, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separors=None, default=None, sort_keys=False, **kw)

  • 将 Python 对象obj 序列化为 JSON 格式,并写入文件对象 fp
  • 参数与 dumps类似。

3.json.loads(s, *, encoding=None, cls=None, object_hook=None, parse_float=None, parse_int=None, parse_constant=None, object_pairs_hook=None, **kw):

将 JSON 格式的字符串s 解码为 Python 对象。

  • s:必需参数,要反序列化的 JSON 格式的字符串。

  • encoding(可选):指定 JSON 字符串的编码方式。默认情况下,json.loads() 将假设输入的 JSON 字符串是使用 UTF-8 编码的。如果 JSON 字符串使用其他编码方式,可以通过这个参数指定编码方式,例如 'utf-16'

  • cls(可选):用于自定义 JSON 解码器的类。这个参数应该是一个 JSONDecoder 的子类。通过传递自定义的解码器类,可以实现更复杂的 JSON 数据解析逻辑。

  • object_hook(可选):用于在解码 JSON 字符串时,对解析出的字典对象进行自定义处理的回调函数。这个函数将在每个解析出的 JSON 对象转换为 Python 字典之后被调用,可以用于执行额外的处理操作,例如将字典转换为自定义对象。

  • parse_float(可选):用于指定 JSON 字符串中浮点数的解析方式的回调函数。默认情况下,json.loads() 将使用 Python 的 float() 函数解析浮点数。

  • parse_int(可选):用于指定 JSON 字符串中整数的解析方式的回调函数。默认情况下,json.loads() 将使用 Python 的 int() 函数解析整数。

  • parse_constant(可选):用于指定 JSON 字符串中特殊常量(如 nulltruefalse)的解析方式的回调函数。默认情况下,json.loads() 将使用 Python 的 NoneTrue 和 False 来表示这些特殊常量。

  • object_pairs_hook(可选):用于在解码 JSON 字符串时,对解析出的字典对象进行自定义处理的回调函数。与 object_hook 不同的是,这个函数将在每个解析出的 JSON 对象转换为 Python 字典的键值对之后被调用。

4.json.load(fp, *, cls=None, object_hook=None, parse_float=None, parse_int=None, parse_constant=None, object_pairs_hook=None, **kw):

  • 从文件对象fp 中读取 JSON 数据并解码为 Python 对象fp
  • 参数与 loads类似。

示例:

import json# 将 Python 对象转换为 JSON 字符串
data = {'name': 'John', 'age': 30, 'city': 'New York'}
json_str = json.dumps(data, indent=2)
print(json_str)# 将 JSON 字符串转换为 Python 对象
json_data = '{"name": "John", "age": 30, "city": "New York"}'
python_obj = json.loads(json_data)
print(python_obj)
  • 在第一个部分中,json.dumps() 用于将 Python 字典 data 转换为格式化良好的 JSON 字符串,然后使用 print() 打印输出。
  • 在第二个部分中,json.loads() 用于将 JSON 字符串 json_data 反序列化为 Python 对象,并将结果存储在变量 python_obj 中。然后同样使用 print() 打印输出这个 Python 对象。

这个代码演示了在将数据从 Python 对象转换为 JSON 字符串(序列化)和从 JSON 字符串转换回 Python 对象(反序列化)的基本操作。

import json# 定义一个 Python 字典对象
data = {'name': 'John','age': 30,'city': 'New York'
}# 将字典对象保存到 JSON 文件中
with open('data.json', 'w') as f:json.dump(data, f)# 从 JSON 文件中加载数据
with open('data.json', 'r') as f:loaded_data = json.load(f)print(loaded_data)  # 输出: {'name': 'John', 'age': 30, 'city': 'New York'}

在这个例子中:

  • 首先定义了一个简单的 Python 字典data ,其中包含了一些基本的用户信息。
  • 然后,使用json.dump() 将这个字典对象保存到名为data.json 的文件中。通过传递文件对象和字典对象作为参数,json.dump() 将字典对象转换为 JSON 格式的字符串,并将其写入文件中。
  • 接着,使用 json.load()data.json 文件中加载数据。json.load() 从文件中读取 JSON 格式的数据,并将其转换为 Python 对象。
  • 最后,打印加载的数据,验证它与原始字典对象相同。

这个例子展示了如何使用json.dump() 将 Python 对象保存到 JSON 文件中,以及如何使用json.load() 从 JSON 文件中加载数据并将其转换回 Python 对象。

http://www.lryc.cn/news/296961.html

相关文章:

  • ONLYOFFICE文档8.0新功能浅探
  • 在vscode 中配置 pyside6 环境
  • C语言:月份缩写
  • 线阵相机系列-- 1. 什么是线阵相机
  • CISCRISC? CPU架构有哪些? x86 ARM?
  • 【C语言】(15)指针进阶
  • 力扣精选算法100道—— 连续数组(前缀和专题)
  • flutter 国内源
  • 第九个知识点:内部对象
  • Android 车载应用开发之车载操作系统
  • Qt PCL学习(文章链接汇总)
  • 安卓动态链接库文件体积优化探索实践
  • [Java][算法 哈希]Day 01---LeetCode 热题 100---01~03
  • 【每日一题】LeetCode——链表的中间结点
  • k8s 部署java应用 基于ingress+jar包
  • 深度学习技巧应用36-深度学习模型训练中的超参数调优指南大全,总结相关问题与答案
  • “探索AJAX:前端与后端数据交互的利器“
  • 【5G NR】移动通讯中使用的信道编解码技术
  • 用Python Tkinter打造的精彩连连看小游戏【附源码】
  • nvm安装node后,npm无效
  • spring boot(2.4.x 开始)和spring cloud项目中配置文件application和bootstrap加载顺序
  • 5-2、S曲线计算【51单片机+L298N步进电机系列教程】
  • SQL 注入 - http头注入之UA头注入探测
  • 学习数据结构和算法的第5天
  • Android 11 访问 Android/data/或者getExternalCacheDir() root方式
  • Linux探秘之旅:透彻理解路径、命令与系统概念
  • 哈希算法 c语言
  • 新版MQL语言程序设计:组合模式的原理、应用及代码实现
  • 代码随想录算法训练营第25天 | 216.组合总和III ,17.电话号码的字母组合
  • Rust 第一个rust程序Hello Rust️