如何处理JSON到QueryDict到JSON

时间:2017-04-06 22:56:43

标签: python json python-2.7

所以我发送的JSON看起来像这样:

[
  {
    "Datum": "textholder1",
    "Bedrag": "",
    "Rekening": "",
    "Tegenrekening": "",
    "Naam": "",
    "Omschrijving": ""
  },
  {
    "Datum": "textholder2",
    "Bedrag": "",
    "Rekening": "",
    "Tegenrekening": "",
    "Naam": "",
    "Omschrijving": ""
  }
]

通过POST到服务器,当我检索它时,它看起来像这样:

{
    "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"]
}

因此,您可以看到它将内部对象转换为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

如何播种服务器:

 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
        });
});

1 个答案:

答案 0 :(得分:1)

以下是您通过Django发送和接收JSON的方式。

这样的Ajax调用:

var t = {
     'foo': 1,
     'bar': 2,
};

$.ajax({
            url: 'localhost',
            type: 'POST',
            data: {
                'data': JSON.stringify(t),
            },
        });

Django看起来像这样:

def test(request):
    import json
    print(json.loads(request.POST['data']))
    return HttpResponse('ok')