创建 NumPy 数组并将其保存为 Django 上下文变量后,加载网页时收到以下错误:
array([ 0, 239, 479, 717, 952, 1192, 1432, 1667], dtype=int64) is not JSON serializable
这意味着什么?
错误信息"is not JSON serializable"指示
"is not JSON serializable"
JSON(JavaScript 对象表示法)是一种用于序列化数据的文本格式(将其转换为可通过 Web 轻松传输的字符串格式)。在 Python 中,只有某些内置类型(如列表、字典、字符串、整数等)可直接序列化为 JSON。但是,NumPy 数组不属于这些类型,因为它们是具有自己数据类型的特殊对象(dtype=int64在
dtype=int64
为了解决这个问题,您需要将 NumPy 数组转换为 JSON 可序列化格式(如 Python 列表),然后再将其传递给 Django 上下文。以下是
.tolist()
以下是如何修改您的
import numpy as np # Example: Creating a NumPy array numpy_array = np.array([0, 239, 479, 717, 952, 1192, 1432, 1667], dtype='int64') # Convert the NumPy array to a Python list context_variable = numpy_array.tolist() # Pass the converted list to your Django context context = { 'array_data': context_variable, }
context当您在 Django 视图中使用它时,您将不再收到is not JSON serializable错误:
context
is not JSON serializable
from django.shortcuts import render import numpy as np def your_view(request): # Your NumPy array numpy_array = np.array([0, 239, 479, 717, 952, 1192, 1432, 1667], dtype='int64') # Convert NumPy array to a list context_variable = numpy_array.tolist() # Pass the context to the template context = { 'array_data': context_variable, } return render(request, 'your_template.html', context)