我正在使用Django视图返回JSON对象。但是,当我使用下面的方法时,我得到的是字典的字符串表示形式,而不是JSON对象。
def api_dataset_index(request):
upload_file = request.FILES.get('file')
if upload_file:
config_str = upload_file.read().decode("utf-8")
d = Dataset.from_yaml(config_str)
return JsonResponse(model_to_dict(d))
响应-"{\"id\": 31, \"name\": \"effort\", \"description\": \"Expressions of customer effort or ease.\", \"multilabeled\": false}"
我在这里做错什么了吗?还是应该使用JSONResponse返回字符串?
字符串是有效的json表示形式。但是,django.http方法“ JsonResponse”的内容类型是作为字符串而不是作为对象发送的。如果传递给JsonResponse()方法的结构是一个列表,则编码正确完成,也就是说,客户端将其作为json对象而不是字符串接收。
证明我遇到的问题与客户端代码有关。
答案 0 :(得分:1)
这是JSON对象的字符串表示形式,应该是返回的内容。在客户端,您可以通过使用以下内容解析它来从中创建一个JSON对象:
var jsonObj = JSON.parse(response)
查看重复说明。
答案 1 :(得分:0)
尝试一下:
import json
def getObjects():
objects = ...
return JsonResponse(json.loads(objects))
您应该已经确定该方法返回的是json而不是String