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

时间:2019-10-04 19:26:29

标签: 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)

但是,当我尝试对关键字(计划)进行硬编码时,它可以工作并得到响应。

1 个答案:

答案 0 :(得分:0)

当您query用于提取多行的数据库时,result在django中是queryset (orderDict)的形式,因此您必须serialize,并且应该{{ 1}}转换为适当的格式。

convert将仅根据api接受response数据。

more info on how to use serializers

  • 注意:

    返回一个json后,服务器和客户端之间的response将得到connection
    从一个closed中您只能发送一个答复。
    但在这里您尝试返回api request。这将是multiple responses
    您将必须在单个响应中发送所有数据。