Python 如何处理JSON到QueryDict到JSON
所以我发送了一个JSON,如下所示:Python 如何处理JSON到QueryDict到JSON,python,json,python-2.7,Python,Json,Python 2.7,所以我发送了一个JSON,如下所示: [ { "Datum": "textholder1", "Bedrag": "", "Rekening": "", "Tegenrekening": "", "Naam": "", "Omschrijving": "" }, { "Datum": "textholder2", "Bedrag": "", "Rekening": "", "Tegenrekening":
[
{
"Datum": "textholder1",
"Bedrag": "",
"Rekening": "",
"Tegenrekening": "",
"Naam": "",
"Omschrijving": ""
},
{
"Datum": "textholder2",
"Bedrag": "",
"Rekening": "",
"Tegenrekening": "",
"Naam": "",
"Omschrijving": ""
}
]
{
"json[1][Omschrijving]": [""],
"json[1][Rekening]": [""],
"json[0][Datum]": ["textholder1"],
"json[1][Tegenrekening]": [""],
"json[0][Rekening]": [""],
"json[0][Bedrag]": [""],
"json[0][Naam]": [""],
"json[1][Naam]": [""],
"json[0][Tegenrekening]": [""],
"json[1][Bedrag]": [""],
"json[0][Omschrijving]": [""],
"json[1][Datum]": ["textholder2"]
}
var t = {
'foo': 1,
'bar': 2,
};
$.ajax({
url: 'localhost',
type: 'POST',
data: {
'data': JSON.stringify(t),
},
});
def test(request):
import json
print(json.loads(request.POST['data']))
return HttpResponse('ok')
通过POST发送到服务器,当我检索它时,它如下所示:
[
{
"Datum": "textholder1",
"Bedrag": "",
"Rekening": "",
"Tegenrekening": "",
"Naam": "",
"Omschrijving": ""
},
{
"Datum": "textholder2",
"Bedrag": "",
"Rekening": "",
"Tegenrekening": "",
"Naam": "",
"Omschrijving": ""
}
]
{
"json[1][Omschrijving]": [""],
"json[1][Rekening]": [""],
"json[0][Datum]": ["textholder1"],
"json[1][Tegenrekening]": [""],
"json[0][Rekening]": [""],
"json[0][Bedrag]": [""],
"json[0][Naam]": [""],
"json[1][Naam]": [""],
"json[0][Tegenrekening]": [""],
"json[1][Bedrag]": [""],
"json[0][Omschrijving]": [""],
"json[1][Datum]": ["textholder2"]
}
var t = {
'foo': 1,
'bar': 2,
};
$.ajax({
url: 'localhost',
type: 'POST',
data: {
'data': JSON.stringify(t),
},
});
def test(request):
import json
print(json.loads(request.POST['data']))
return HttpResponse('ok')
如您所见,它将内部对象转换为json[index]
,而不是保留其格式。这是正常的行为还是我做错了什么?以下是我检索数据的方式:
inputData = request.POST
userDataList = dict(inputData.lists())
print userDataList # prints the funny formatted JSON
print type(userDataList) # dict
print type(inputData) # django.http.request.QueryDict
如何将im种子设定到服务器:
frm = $("#textCSVForm");
frm.submit(function(event) {
event.preventDefault()
$.ajax({
url: frm.attr('action'),
type: frm.attr('method'),
dataType: '',
data: {
json: json.data
},
beforeSend: function(xhr, settings) {
if (!csrfSafeMethod(settings.type) && !this.crossDomain) {
xhr.setRequestHeader("X-CSRFToken", csrftoken);
}
}
})
.done(function(response) {
})
.fail(function() {})
.always(function() {
console.log(json.data); // logs the first formatted JSON
});
});
下面是通过Django发送和接收JSON的方式 Ajax调用如下:
[
{
"Datum": "textholder1",
"Bedrag": "",
"Rekening": "",
"Tegenrekening": "",
"Naam": "",
"Omschrijving": ""
},
{
"Datum": "textholder2",
"Bedrag": "",
"Rekening": "",
"Tegenrekening": "",
"Naam": "",
"Omschrijving": ""
}
]
{
"json[1][Omschrijving]": [""],
"json[1][Rekening]": [""],
"json[0][Datum]": ["textholder1"],
"json[1][Tegenrekening]": [""],
"json[0][Rekening]": [""],
"json[0][Bedrag]": [""],
"json[0][Naam]": [""],
"json[1][Naam]": [""],
"json[0][Tegenrekening]": [""],
"json[1][Bedrag]": [""],
"json[0][Omschrijving]": [""],
"json[1][Datum]": ["textholder2"]
}
var t = {
'foo': 1,
'bar': 2,
};
$.ajax({
url: 'localhost',
type: 'POST',
data: {
'data': JSON.stringify(t),
},
});
def test(request):
import json
print(json.loads(request.POST['data']))
return HttpResponse('ok')
Django的观点如下:
[
{
"Datum": "textholder1",
"Bedrag": "",
"Rekening": "",
"Tegenrekening": "",
"Naam": "",
"Omschrijving": ""
},
{
"Datum": "textholder2",
"Bedrag": "",
"Rekening": "",
"Tegenrekening": "",
"Naam": "",
"Omschrijving": ""
}
]
{
"json[1][Omschrijving]": [""],
"json[1][Rekening]": [""],
"json[0][Datum]": ["textholder1"],
"json[1][Tegenrekening]": [""],
"json[0][Rekening]": [""],
"json[0][Bedrag]": [""],
"json[0][Naam]": [""],
"json[1][Naam]": [""],
"json[0][Tegenrekening]": [""],
"json[1][Bedrag]": [""],
"json[0][Omschrijving]": [""],
"json[1][Datum]": ["textholder2"]
}
var t = {
'foo': 1,
'bar': 2,
};
$.ajax({
url: 'localhost',
type: 'POST',
data: {
'data': JSON.stringify(t),
},
});
def test(request):
import json
print(json.loads(request.POST['data']))
return HttpResponse('ok')
你为什么要把它变成一个列表?@Rishav你指的是
.lists()
?根据我的测试结果,有或没有它的输出没有差别。但是我没有特别的理由为什么我要使用.lists()
我尝试了它,因为它是一个包含对象的数组。你是如何将数据发送到服务器的?@Rishav我已经更新了这足够了还是你需要更多信息?我用的是Django form systemhmm我记得我试过类似的方法,然后我得到了与我现在得到的相同的错误MultiValueDictKeyError:“'json'”
,所以我放弃了这个方法(我尝试了几乎所有我能在网上找到的解决方案,但都不起作用),并尝试了我上面所做的方法。但是,如果我设法修复这个多值错误,我应该正确格式化JSON?@Kevin我刚刚测试了一个替代方法,现在可以工作了OMG这实际上很聪明:D谢谢你的解决方案!