googleappengine:Python:WebOb:如何获取JSON格式的POST数据?

2024-06-17 01:49:48 发布

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

我正在googleappengine平台上构建一个web应用,它使用webapp2,后者使用WebOb。我想POST一些JSON格式的数据,包括嵌套数组和字典。E、 g.:

$.post('/addvendor', {'vendor': {'name': 'test', 'description': 'a good company', 'tags':['foo', 'bar']}}, function(data){console.log(data)}, 'application/json')

但是,在服务器端,数据作为一个平面的“MultiDict”对象传入,而不是像IPOST编辑的原始嵌套JSON对象

^{pr2}$

这个对象很难解析。在我的服务器代码中,有没有一种方法可以在服务器上以标准JSON格式获取相同的数据,或者至少是使用嵌套字典和数组的Python等价物,以便我可以轻松地操作和检查数据?在


Tags: 数据对象服务器webjsondata字典格式
2条回答

(通过jayhendren的帮助更新)您应该使用$.ajax并手动设置contentType='application/json;charset=utf-8',因为$.post使用默认的“application/x-www-form-urlencoded;”内容类型。您还需要手动将数据编码为JSON字符串JSON.stringify公司名称:

$.ajax({url:'/addvendor', 
        type: 'post', 
        data:JSON.stringify({'vendor': {'name': 'test', 'description': 'a good company', 'tags':['foo', 'bar']}}), 
        contentType:'application/json; charset=utf-8',
        dataType: "json",
        success:function(data){console.log(data)}})

...

print json.loads(self.request.body)

使用json.dumps文件(你的数据) 别忘了将头内容类型更改为application/json

headers = {
"Content-Type": "application/json"
}
session.post(<url>, data=json.dumps(yourdata))

相关问题 更多 >