DRF返回JSON响应首尾带多余双引号问题如何解决
问题原因
手动将字典通过str()转为字符串后传入Response,DRF内置JSON渲染器会将传入的字符串作为普通文本值做JSON序列化,序列化字符串值时会自动在外层包裹双引号,最终产生首尾多余引号的异常返回。
修复方案
不要手动对字典做字符串转换,直接传入原生Python字典即可,DRF会自动完成字典到标准JSON格式的序列化,无需手动处理格式。
修正后代码:
from rest_framework import status from rest_framework.response import Response # 其余业务逻辑...... return Response( data={'id': pk}, status=status.HTTP_403_FORBIDDEN )
注意事项
- 无需手动指定
content_type='application/json',DRF的Response默认使用JSON渲染器时会自动设置正确的响应头,手动指定反而可能在配置多渲染器场景下引发冲突。 - 标准JSON规范要求字符串使用双引号包裹,最终接口返回的内容格式为
{"id": "54fa0000-1cdd-4c6d-83d7-ab19a7f11944"},属于合规JSON格式,所有前端、HTTP客户端均可正常解析,和单引号包裹的Python字典打印格式有区别是正常现象,不需要额外调整。
内容的提问来源于stack exchange,提问作者Goku
相关产品推荐
相关产品推荐

