作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用以下代码将模型数据作为 json 发送
Views.py
def autocomplete(request):
model = NewCarModel.objects.only('car_model_new')
print('model is',model)
# users_list = list(model)
posts_serialized = serializers.serialize('json', model)
print('post is',posts_serialized)
return JsonResponse(posts_serialized,safe=False)
models.py
class NewCarModel(models.Model):
car_model_new = models.CharField(max_length=100, unique=True)
def __str__(self):
return self.car_model_new
输出:
"[{\"model\": \"core.newcarmodel\", \"pk\": 1, \"fields\": {\"car_model_new\": \"swift\"}}, {\"model\": \"core.newcarmodel\", \"pk\": 2, \"fields\": {\"car_model_new\": \"wagonr\"}}, {\"model\": \"core.newcarmodel\", \"pk\": 3, \"fields\": {\"car_model_new\": \"baleno\"}}, {\"model\": \"core.newcarmodel\", \"pk\": 4, \"fields\": {\"car_model_new\": \"breeza\"}}, {\"model\": \"core.newcarmodel\", \"pk\": 5, \"fields\": {\"car_model_new\": \"spresso\"}}]"
为什么我的 JSON 输出中有一堆反斜杠以及如何删除它们,而 Mozilla Firefox 默认 JSON 过滤器也不起作用,我也无法使用 java 脚本从中提取数据(因为我能够提取数据来自一些公共(public) API,因此提取代码没有问题)
编辑:
我如何尝试提取数据将 JSON 解析为变量 myArr 后
const carModelsArr = myArr.data.map((d) => d.fields.car_model_new
编辑 2:所以无法提取的解决方案是代替
var myArr = JSON.parse(this.responseText);
用过这个:
var myArr = JSON.parse(JSON.parse(this.responseText));
并且提取代码能够工作
但仍然不能解决反斜杠问题,如果可能,我想避免使用 DRF
最佳答案
我认为序列化程序这样做是为了将双引号 "
括在字典对象周围,同时将它们转换为 Json 对象。可能该字典对象已经具有用相同双引号括起来的键或值 "
。因此那个反斜杠。
如果使用 Python 则必须使用 json.loads
否则如果使用 JS< 则使用 JSON.parse
/强>
Python3:
json.loads(response)
JS:
JSON.parse(data)
您将数据序列化两次,因此反斜杠,您被迫使用 JSON.parse
两次。由于您已经序列化响应,您可以简单地使用 HttpResponse
或 Response
返回序列化数据。
解决方案一:
from django.http import HttpResponse
return HttpResponse(posts_serialized, content_type='application/json')
方案二:
from rest_framework.response import Response
return Response(posts_serialized, content_type='application/json')
关于python - 为什么我的 JSON 输出中有一堆反斜杠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60376352/
我是一名优秀的程序员,十分优秀!