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

2024-02-09 17:36

本文主要是介绍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 对象。

这篇关于json模块(高维数据的存储与读取)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/694873

相关文章

C#中读取XML文件的四种常用方法

《C#中读取XML文件的四种常用方法》Xml是Internet环境中跨平台的,依赖于内容的技术,是当前处理结构化文档信息的有力工具,下面我们就来看看C#中读取XML文件的方法都有哪些吧... 目录XML简介格式C#读取XML文件方法使用XmlDocument使用XmlTextReader/XmlTextWr

Redis的数据过期策略和数据淘汰策略

《Redis的数据过期策略和数据淘汰策略》本文主要介绍了Redis的数据过期策略和数据淘汰策略,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录一、数据过期策略1、惰性删除2、定期删除二、数据淘汰策略1、数据淘汰策略概念2、8种数据淘汰策略

轻松上手MYSQL之JSON函数实现高效数据查询与操作

《轻松上手MYSQL之JSON函数实现高效数据查询与操作》:本文主要介绍轻松上手MYSQL之JSON函数实现高效数据查询与操作的相关资料,MySQL提供了多个JSON函数,用于处理和查询JSON数... 目录一、jsON_EXTRACT 提取指定数据二、JSON_UNQUOTE 取消双引号三、JSON_KE

MySQL数据库函数之JSON_EXTRACT示例代码

《MySQL数据库函数之JSON_EXTRACT示例代码》:本文主要介绍MySQL数据库函数之JSON_EXTRACT的相关资料,JSON_EXTRACT()函数用于从JSON文档中提取值,支持对... 目录前言基本语法路径表达式示例示例 1: 提取简单值示例 2: 提取嵌套值示例 3: 提取数组中的值注意

Python给Excel写入数据的四种方法小结

《Python给Excel写入数据的四种方法小结》本文主要介绍了Python给Excel写入数据的四种方法小结,包含openpyxl库、xlsxwriter库、pandas库和win32com库,具有... 目录1. 使用 openpyxl 库2. 使用 xlsxwriter 库3. 使用 pandas 库

SpringBoot定制JSON响应数据的实现

《SpringBoot定制JSON响应数据的实现》本文主要介绍了SpringBoot定制JSON响应数据的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们... 目录前言一、如何使用@jsonView这个注解?二、应用场景三、实战案例注解方式编程方式总结 前言

Redis存储的列表分页和检索的实现方法

《Redis存储的列表分页和检索的实现方法》在Redis中,列表(List)是一种有序的数据结构,通常用于存储一系列元素,由于列表是有序的,可以通过索引来访问元素,因此可以很方便地实现分页和检索功能,... 目录一、Redis 列表的基本操作二、分页实现三、检索实现3.1 方法 1:客户端过滤3.2 方法

使用Python在Excel中创建和取消数据分组

《使用Python在Excel中创建和取消数据分组》Excel中的分组是一种通过添加层级结构将相邻行或列组织在一起的功能,当分组完成后,用户可以通过折叠或展开数据组来简化数据视图,这篇博客将介绍如何使... 目录引言使用工具python在Excel中创建行和列分组Python在Excel中创建嵌套分组Pyt

Python利用自带模块实现屏幕像素高效操作

《Python利用自带模块实现屏幕像素高效操作》这篇文章主要为大家详细介绍了Python如何利用自带模块实现屏幕像素高效操作,文中的示例代码讲解详,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1、获取屏幕放缩比例2、获取屏幕指定坐标处像素颜色3、一个简单的使用案例4、总结1、获取屏幕放缩比例from

nginx-rtmp-module模块实现视频点播的示例代码

《nginx-rtmp-module模块实现视频点播的示例代码》本文主要介绍了nginx-rtmp-module模块实现视频点播,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习... 目录预置条件Nginx点播基本配置点播远程文件指定多个播放位置参考预置条件配置点播服务器 192.