Парсер Django Rest Framework не принимает строку как правильный JSON

Я отправляю некоторые данные на бэкенд Django Rest Framework с Content-Type, установленным как application/json. Если я пытаюсь отправить любой JSON, который имеет форму типичного вложенного объекта ключ-значение, все работает нормально.

Но если я хочу отправить простую строку, например test, я получаю 400 Bad request из-за неправильного JSON: JSON parse error - Expecting value: line 1 column 1 (char 0).

Но разве строки не являются допустимыми значениями JSON согласно RFC 8259?

Я не понимаю из официальной документации DRF, является ли это нормальной функцией для Django JSON Parser или я где-то делаю что-то неправильно?

Представление на основе классов, которое я использую, это ListCreateAPIView:

class ObjectList(ListCreateAPIView):
    """
    View dedicated to GET a list of instances or POST a new one
    """    
    serializer_class = MySerializer
    authentication_classes = [JWTAuthentication]
    permission_classes = [IsAuthenticated]

    def get_queryset(self):
        # Filter objects based on user identity (token based)
        queryset = MyObject.objects.filter(user=self.request.user)
        return queryset
    
    def post(self, request, format=None):
        transect_data = request.data # Returns 400 Bad request

You can pass any JSON value [json. org], so that includes a string, but a string is put between double quotes ("…") and some characters should be escaped, so you send "test", not test.

test itself is not a valid JSON value. Indeed, you can check for example with the Online JSON valiator [jsonlint.com] if a JSON blob is valid JSON.

Строковый литерал, как и, например, в Python и JavaScript, помещается в "конверт" из двойных кавычек и экранирует определенные символы таким образом, что если строка сама содержит двойную кавычку, этот символ экранируется должным образом.

Вернуться на верх