gpt4 book ai didi

python - 为什么从 django rest 框架返回的 JSON 在响应中有正斜杠?

转载 作者:太空狗 更新时间:2023-10-30 00:24:12 26 4
gpt4 key购买 nike

我的回复码

from rest_framework.response import Response
import json
responseData = { 'success' : True }
return Response(json.dumps(responseData))

它在执行 curl 或通过浏览器访问响应时的显示方式。

"{\"success\": true}"

为什么是正斜杠?如何删除它们?

最佳答案

您正在将数据呈现为 JSON 两次。删除您的 json.dumps() 调用。

来自Django REST documentation :

Unlike regular HttpResponse objects, you do not instantiate Response objects with rendered content. Instead you pass in unrendered data, which may consist of any Python primitives.

然后 Django REST 框架负责为您生成 JSON。因为你给了它一个字符串,所以那个字符串是 JSON 编码的再次:

>>> import json
>>> responseData = { 'success' : True }
>>> print json.dumps(responseData)
{"success": true}
>>> print json.dumps(json.dumps(responseData))
"{\"success\": true}"

框架使用Content Negotiation确定要使用的序列化格式;这样,您的 API 客户端也可以请求将数据编码为例如 YAML 或 XML。

另见 Responses documentation :

REST framework supports HTTP content negotiation by providing a Response class which allows you to return content that can be rendered into multiple content types, depending on the client request.

关于python - 为什么从 django rest 框架返回的 JSON 在响应中有正斜杠?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28249491/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com