我的目标是提出一个获取base64解码字符串的端点。
我的输入JSON如下所示:
{
"encoded_data": "a2F0aWUsIGpvaG5zLCBrYXRpZUBnbWFpbC5jb20KdG9tbXksbGVlLHRvbW15QGdtYWlsLmNvbQ=="
}
我尝试通过以下方式实现它,但最终出现以下错误消息:
JSON parse error - Expecting value: line 1 column 1 (char 0)
好像我弄乱了概念。确实需要帮助:
class UsersFileUpload(APIView):
#parser_classes = (MultiPartParser,)
def post(self, request):
stream = base64.b64decode(request.data['encoded_data'])
stream = io.BytesIO(stream)
data = JSONParser().parse(stream)
serializer = UsersSerializer(data=data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
答案 0 :(得分:0)
我认为您无法正确解码文本,因此不需要使用BytesIO
。
您应该decode
b64decode
返回的字节字符串,然后将其传递给JSONParser。
b64decoded_data = base64.b64decode(request.data['encoded_data']).decode('UTF-8')
data = JSONParser().parse(b64decoded_data)