我刚刚开始学习 Django,并尝试创建一个 API。它是一个简单的 API,它从表中获取定义并将其作为响应返回。但每当我尝试在请求中发送关键字时,都会收到错误,类型为“JSONDecodeError”的对象不是 JSON 可序列化。我在这里做错了什么?
@api_view(['POST'])
def getdetails(request):
try:
connection = sqlite3.connect('{}.db'.format('insure'))
cursor = connection.cursor()
plan = json.loads(request.body.decode('utf-8'))
cursor.execute(
"""SELECT INSURANCE_TYPE_DESC FROM tblInsurancePlans WHERE INSURANCE_TYPE LIKE '%{}%'""".format(plan)
)
rows = cursor.fetchall()
for row in rows:
return JsonResponse(str(row), safe=False)
except Exception as e:
return Response(e)
但是,当我尝试对关键字(计划)进行硬编码时,它有效并且我得到了响应。
最佳答案
当您查询
数据库以获取多行时,结果
在django中作为查询集(orderDict)
出现,因此您有来序列化
它们,并且应该转换
为正确的格式。
response
根据 api 仅接受 json
数据。
对于more info on how to use serializers .
注意:
返回一个
响应
后,服务器和客户端之间的连接
将关闭
。
对于一个api 请求
,您只能发送一个响应。
但在这里您试图返回多个响应
。这不起作用
。
您必须在单个响应中发送所有数据。
关于python - 类型 'JSONDecodeError' 的对象不可 JSON 序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58242180/