gpt4 book ai didi

ajax - 如何在 Django View 中解析嵌套的 json ajax 对象?

转载 作者:行者123 更新时间:2023-12-02 02:01:02 26 4
gpt4 key购买 nike

我需要提出如下请求:

var url="http://127.0.0.1:8080/simulate/";
$.ajax({
url: url,
type: 'POST',
data:{ student_num:10,
company_num:10,
students:"",
csrfmiddlewaretoken:'{{csrf_token}}',
companies:[{weight:10},{weight:11},{weight:9}]
},
success: function(data, textStatus, xhr) {
var text=xhr.responseText
console.log(text)
}
});

但这样一来, request.POST对象未组织 companies放入嵌套的 json 数组中。相反,它使其成为一个二维数组,如下所示:
<QueryDict: {u'student_num': [u'10'], u'students': [u''], u'companies[2][weight]': [u'9'], u'companies[1][weight]': [u'11'], u'company_num': [u'10'], u'companies[0][weight]': [u'10'], u'csrfmiddlewaretoken': [u'RpLfyEnZaU2o4ExxCVSJkTJ2ws6WoPrs']}>

就这样,感觉很难重新整理 companies到一个对象列表中。我查了一些其他的问题,有人说我们应该这样做:
companies:"[{weight:10},{weight:11},{weight:9}]"

然后使用 json.loads将字符串解析回对象列表。但是如果我使用这样的代码,我会不断收到解析错误:
company_array = request.POST['company_array']
company_array = json.loads(company_array)

或这个:
company_array = json.load(StringIO(company_array))

那么处理嵌套 JSON 对象的正确方法应该是什么?

最佳答案

在发送数据之前,您应该使用 JSON.stringify() 对数据进行字符串化:

$.ajax({
url: url,
type: 'POST',
data: { data: JSON.stringify({ student_num:10,
company_num:10,
students:"",
csrfmiddlewaretoken:'{{csrf_token}}',
companies:[{weight:10},{weight:11},{weight:9}]
}) },
success: function(data, textStatus, xhr) {
var text=xhr.responseText
console.log(text)
}
});

然后你可以用 json.loads() 解析在服务器端:
 data = json.loads(request.POST.get('data'))

关于ajax - 如何在 Django View 中解析嵌套的 json ajax 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17201075/

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