Python 如何处理JSON到QueryDict到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":

所以我发送了一个JSON,如下所示:

[
  {
    "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谢谢你的解决方案!