gpt4 book ai didi

python - 为什么我的 JSON 输出中有一堆反斜杠

转载 作者:行者123 更新时间:2023-12-05 01:13:22 24 4
gpt4 key购买 nike

我正在尝试使用以下代码将模型数据作为 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)

enter image description here

编辑

您将数据序列化两次,因此反斜杠,您被迫使用 JSON.parse 两次。由于您已经序列化响应,您可以简单地使用 HttpResponseResponse 返回序列化数据。

解决方案一:

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/

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