Объект типа 'JSONDecodeError' не сериализуем в формате JSON - PullRequest
1 голос
/ 04 октября 2019

Я только начал изучать 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 голосов
/ 05 октября 2019

Когда вы query база данных для выборки более одной строки, result приходит как queryset (orderDict) в django, поэтому вам нужно serialize их, и convert в правильном формате.

response будет принимать только json данные в соответствии с API.

для подробнее о том, как использовать сериализаторы .

  • Примечание:

    После возврата одного response connection между сервером и клиентом получается closed.
    с одного api request вы можете отправить только один ответ.
    но здесь вы пытаетесь вернуть multiple responses. Это будет not work.
    вам придется отправлять все данные водин ответ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...