Python 修复 TypeError: Object of Type 'Int64' Is Not JSON Serializable 错误
我们将介绍如何正确序列化 JSON 而不会出现错误,例如 Object of type 'int64' is not JSON serializable with examples in Python。
修复 TypeError: Object of type 'int64' is not JSON serializable in Python
Python 是一种高级解释型编程语言,具有许多库,可用于各种领域的各种任务,例如 Web 开发、数据分析、人工智能、科学计算等等。 Python 最常用于处理 Web 开发中的 JSON 格式。
在处理 JSON 格式时,许多程序员会遇到一个常见的错误消息:“int64”类型的对象不是 JSON 可序列化的。
本文将探讨为什么会出现此错误以及我们如何轻松解决它。 首先,我们必须了解什么是 JSON 以及为什么它在 Web 开发和现代 Web 应用程序中至关重要。
JSON 是一种轻量级的数据格式,对人类和机器来说都是可读和可理解的; 它很容易解析和生成。
它最常用于将数据从服务器传输到客户端或在两个服务器之间传输。 json.dump() 和 json.load() 是 Python 最常用的内置 JSON 函数,用于编码和解码 JSON 数据。 这些函数是 Python 中 json 模块的一部分。
json.dump() 用于将对象转换为 JSON 格式并将它们写入文件或字符串。 而 json.load() 用于解析 JSON 格式字符串并将其解码回 Python 对象。
当我们尝试将 Python 对象编码为 JSON 格式时,会出现 Object of type 'int64' is not JSON serializable 错误。
此错误背后的主要原因是 JSON 格式不支持 int64 数据类型。 int64 数据类型表示需要高精度的大型科学或计算数字。
JSON 格式仅支持有限的数据类型,例如数字、字符串、布尔值和空值。
存在两种可能的解决方案来解决此错误,而不会丢失我们要转换的数字的精度。 下面讨论可能的解决方案。
在 Python 中将 int64 转换为 int 或 Float 数据类型
消除此错误并使您的程序正常运行的一种简单方法是使用这些简单的函数将 int64 数据类型转换为简单的 int 或 float 数据类型 int() 会将其转换为简单的整数,而 float() 将 将其转换为浮点数据类型。
让我们来看一个示例,我们将一个简单的数字转换为 int64 数据类型,这样我们就可以重新生成错误,然后应用解决方案并查看下面的结果。
import json
import numpy as np
num_data = {"number": np.int64(789)}
json_conversion = json.dumps({"Data": num_data["number"]})
print(json_conversion)
从上面的例子可以看出,我们首先导入了 json 模块,允许我们使用 json.dumps() 函数将 Python 对象编码为 JSON 格式。 我们还导入了 NumPy 模块,因为它允许我们使用其函数 np.int64()
将简单数字转换为 int64 数据类型。
当我们尝试将 Python 对象转换为 JSON 格式时,它给了我们同样的错误:'int64' 类型的对象不是 JSON 可序列化的。
让我们实现这两个解决方案并检查它如何解决错误,如下所示。
import json
import numpy as np
num_data = {"number": np.int64(789)}
json_conversion = json.dumps({"Data": int(num_data["number"])})
print(json_conversion)
输出:
让我们使用 float()
来解决错误,如下所示。
import json
import numpy as np
num_data = {"number": np.int64(789)}
json_conversion = json.dumps({"Data": float(num_data["number"])})
print(json_conversion)
输出:
在 Python 中将 int64 转换为字符串数据类型
让我们讨论第二种解决方案,它和第一种一样简单。 我们还可以使用内置函数将 int64 数据类型转换为字符串。
str()
函数用于将任何数据类型转换为字符串,是JSON所支持的,也可以用来表示数值。 让我们使用上面的例子并尝试这个解决方案,如下所示。
import json
import numpy as np
num_data = {"number": np.int64(789)}
json_conversion = json.dumps({"Data": str(num_data["number"])})
print(json_conversion)
输出:
从上面的例子可以看出,解决这个错误非常简单,只需要使用Python中的内置函数将int64转换为整型、浮点型或字符串数据类型即可。
我们希望本文能帮助您解决问题。
相关文章
Python 中 PermissionError: [WinError 5] Access Is Denied 错误
发布时间:2023/05/13 浏览次数:165 分类:Python
-
我们将简单介绍如何解决 PermissionError: [WinError 5] Access is denied in Python 。PermissionError: [WinError 5] Python 拒绝访问
Python 中 ZeroDivisionError: Float Division by Zero 错误
发布时间:2023/05/13 浏览次数:123 分类:Python
-
我们将介绍为什么会出现 ZeroDivisionError 以及我们如何通过 Python 中的示例轻松解决它。Python ZeroDivisionError: Float Division by Zero
Python 中 Segmentation Fault 11 错误
发布时间:2023/05/13 浏览次数:85 分类:Python
-
我们可以通过检查代码中的错误、增加堆栈大小、使用调试工具、更新 Python 版本、重新安装 Python 或检查系统内存来修复 osx in Python 中的分段错误 11。
Python 中的 IndexError: Tuple Index Out of Range 错误
发布时间:2023/05/13 浏览次数:128 分类:Python
-
在本文中,我们将演示为什么会出现 IndexError: tuple index out of range 错误,以及如何通过示例在 Python 中解决该错误。
修复 Python 中 TypeError: List Indices Must Be Integers, Not List 错误
发布时间:2023/05/13 浏览次数:94 分类:Python
-
我们将介绍嵌套列表以及许多程序员在尝试通过 Python 中的示例访问其中的元素时遇到的常见错误。修复 TypeError: list indices must be integers, not list in Python 列表是 Python 最常用和最通用的数据类型之
python 修复 TypeError: 'float' Object Cannot Be Interpreted as an Integer 错误
发布时间:2023/05/13 浏览次数:118 分类:Python
-
我们将介绍为什么会出现 TypeError: 'float' object cannot be interpreted as an integer 错误,以及我们如何在 Python 中解决它。
Python 版本降级
发布时间:2023/05/11 浏览次数:75 分类:Python
-
本教程将演示如何根据我们在不同设备上的需求对 Python 进行降级。 我们将讨论适用于 Windows、Linux 和 Mac 设备的方法。
使用 pip 安装Python版本
发布时间:2023/05/11 浏览次数:158 分类:Python
-
我们将介绍如何在 Python 中使用 pip 安装特定版本的包。 我们将简要介绍软件包的版本以及应该安装的时间和版本。使用 pip 安装特定的 Python 版本
在 Python 2 和 3 之间切换
发布时间:2023/05/11 浏览次数:170 分类:Python
-
本文将展示如何在 Python 2 和 3 之间切换以运行 Python 代码。在 Python 2 和 3 之间切换 对于不同的操作系统,切换方式会有所不同;