python - 类型 'JSONDecodeError' 的对象不可 JSON 序列化

标签 python django rest api

我刚刚开始学习 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/

相关文章:

python - 黑客排名 : Check Binary Search Tree: Python -test case -for duplications

python - 将随机浮点列添加到数据框中,但对于相同的数据框条目具有相同的值

python - 如何在不重复代码的情况下定义 randint 的元组?

python - 如何让测试资源管理器为 Python VS 代码工作?

python - 处理 WSGI 脚本时发生异常 - IOError : failed to write data

django - 使用 'as_crispy_field' 在表单内联中呈现单个字段

rest - 400 BAD request HTTP错误码是什么意思?

python - Django 用户注册表最佳实践

javascript - 内容丰富且 javascript : get only entries with fields. future 日期

asp.net-mvc - 我可以对单个 RESTful Url 的 POST 和 GET 使用两种不同的模型吗?