Django JSONResponse 返回一个字符串而不是 JSON

标签 django python-3.x

我正在使用 Django View 返回一个 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 对象而不只是一个字符串接收。
编辑2
原来我遇到的问题是在客户端代码上。

最佳答案

这是 JSON 对象的字符串表示形式,应该是返回的内容。在客户端,你可以从它创建一个 JSON 对象,只需将它与类似的东西配对:

var jsonObj = JSON.parse(response)

请参阅此处的注释:W3Schools JSON.parse()或在这里 MDN JSON.parse()

关于Django JSONResponse 返回一个字符串而不是 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52066079/

相关文章:

mysql - Flask 与 mysqldb 集成

python - 我可以在构造函数方法之外声明 Python 类字段吗?

python - 如何序列化和反序列化 Django ORM 查询(不是查询集)?

python - 带条件的嵌套对象列表

django - 在 Django 中,我如何模仿通过管理员为我自己的模型添加用户的两步方法?

python - 从另一个 postgres 表更新一个 postgres 表

python - 按星期几排序列?

Django - 如何在保存特定模型时触发操作?

django - 使用 unique=True 字段验证 ModelForm

python - Python 中的静态数组