无法使用json.loads()在Django 1.8中从request.body创建列表

时间:2015-10-24 11:14:08

标签: python json django

例如,我通过js发送这个json字符串

{data: "[{"id":1},{"id":2}]"}

在服务器端我尝试从它创建一个字典:

result = json.loads(str(request.body, 'utf-8'))
print(result)                     # {'data': '[{"id":1},{"id":2}]'}
print(type(result['data']))       # <class 'str'> (not list!!!)
print(str(request.body, 'utf-8')) # {"data":"[{\"id\":1},{\"id\":2}]"}

那么,为什么json.loads不会创建列表呢?我使用python 3

2 个答案:

答案 0 :(得分:3)

因为您在数据中有引号

{'data': "[I'M STRING]"}

{'data': [im_list]}

答案 1 :(得分:0)

谢谢,反1869

最后,我知道为什么它不起作用。我有一张表格

<form action="" method="post">
    <input id="datafield" type="hidden" name="data" value="[{"id":1},{"id":2}]"/>
    <button type="submit">Submit</button>
</form>

并像这样提交(错误,它引用括号的引号):

$.ajax({ 
    method: 'post',
    data: JSON.stringify( $('form').serializeArray() ), // sends with double quotes near brackets
    contentType: 'application/json'
});

现在我根本不使用这个表格:

        var j = [{"id":1},{"id":2}];
        $.ajax({ 
            type: 'post',
            data: JSON.stringify(j),   // sends normally
            contentType: 'application/json'
        });