Парсер 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, помещается в "конверт" из двойных кавычек и экранирует определенные символы таким образом, что если строка сама содержит двойную кавычку, этот символ экранируется должным образом.