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转换为整型、浮点型或字符串数据类型即可。
我们希望本文能帮助您解决问题。
相关文章
Pandas DataFrame DataFrame.shift() 函数
发布时间:2024/04/24 浏览次数:133 分类:Python
-
DataFrame.shift() 函数是将 DataFrame 的索引按指定的周期数进行移位。
Python pandas.pivot_table() 函数
发布时间:2024/04/24 浏览次数:82 分类:Python
-
Python Pandas pivot_table()函数通过对数据进行汇总,避免了数据的重复。
Pandas read_csv()函数
发布时间:2024/04/24 浏览次数:254 分类:Python
-
Pandas read_csv()函数将指定的逗号分隔值(csv)文件读取到 DataFrame 中。
Pandas 多列合并
发布时间:2024/04/24 浏览次数:628 分类:Python
-
本教程介绍了如何在 Pandas 中使用 DataFrame.merge()方法合并两个 DataFrames。
Pandas loc vs iloc
发布时间:2024/04/24 浏览次数:837 分类:Python
-
本教程介绍了如何使用 Python 中的 loc 和 iloc 从 Pandas DataFrame 中过滤数据。
在 Python 中将 Pandas 系列的日期时间转换为字符串
发布时间:2024/04/24 浏览次数:894 分类:Python
-
了解如何在 Python 中将 Pandas 系列日期时间转换为字符串