python从json解压dict

2024-05-14 02:59:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直在四处寻找,但是我找不到答案,我猜我的问题没有很好的定义,所以我希望能得到一些指导

我用的是涡轮齿轮2.2 我从客户端视图通过$.post()发送一个JavaScript对象, 在服务器上,我接收到这个对象(kw):

{'phones[1][surname]': u'sym', 'phones[2][name]': u'', 'phones[1][phone]': u'5498498', 'phones[0][phone]': u'0564', 'phones[1][name]': u'jhon', 'phones[0][surname]': u'cat', 'phones[2][phone]': u'', 'phones[0][name]': u'bob'}

我从一个有3列的表中发送一个数据

在我的服务器上,我试图将每一行的数据分开,但我在这里有点不知所措。 如何将dict拆分为不同的数据行?在

^{pr2}$

失败

{ValueError}: Expecting property name: line 1 column 2 (char 1)

如何将dict/对象转换为嵌套字典(或其他东西)? 谢谢


Tags: 数据对象答案name服务器视图客户端定义
2条回答

感谢您的帮助Martijn Pieters,我以为我在发布JSON,但我没有

You didn't post JSON; you posted application/x-www-form-urlencoded data that jQuery formatted for the PHP array feature. – Martijn Pieters

这是我的JavaScript,我正在试用HandsOnTable(jQuery数据网格编辑器)

$("#sendToServer").click(function(){
        var tableData = $("#myTable").data('handsontable');
        $.post(
            URL,
            {phones:tableData.getData()},
            function(data){
                console.log(data)
            }
        )
    })

那不是JSON,尽管我以为是

总之,简单的解决方法是:

客户端(JavaScript):

^{pr2}$

现在在服务器端(Python):

import json
def getPhones(self,**kw):
        phones = json.loads(kw['phones'])
        ...

我把数据作为一个行的dict,太好了

谢谢你的指导

要发布JSON,请不要使用$.post()。请改用$.ajax(),并显式设置内容类型:

$.ajax({
    url: URL,
    type: "POST",
    data: JSON.stringify({phone: tableData.getData()}),
    contentType: 'application/json; charset=utf-8'
    dataType: 'json',
    success: function(data) {
        console.log(response);
    },
});

如果您有一个直接处理JSON的控制器,例如TurboGears Web Services提供的控制器,这一点尤其有用。在

相关问题 更多 >