迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > Python >

Python 修复 TypeError: Object of Type 'Int64' Is Not JSON Serializable 错误

作者:迹忆客 最近更新:2023/05/11 浏览次数:

我们将介绍如何正确序列化 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 可序列化的。

Object of type int64 is not json serializeable in Python

让我们实现这两个解决方案并检查它如何解决错误,如下所示。

import json
import numpy as np

num_data = {"number": np.int64(789)}
json_conversion = json.dumps({"Data": int(num_data["number"])})
print(json_conversion)

输出:

solution using int()

让我们使用 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)

输出:

solution using float()


在 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)

输出:

solution using float()

从上面的例子可以看出,解决这个错误非常简单,只需要使用Python中的内置函数将int64转换为整型、浮点型或字符串数据类型即可。

我们希望本文能帮助您解决问题。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

Python 中 Segmentation Fault 11 错误

发布时间:2023/05/13 浏览次数:85 分类:Python

我们可以通过检查代码中的错误、增加堆栈大小、使用调试工具、更新 Python 版本、重新安装 Python 或检查系统内存来修复 osx in Python 中的分段错误 11。

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 之间切换 对于不同的操作系统,切换方式会有所不同;

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便