Python - json加载请求参数

时间:2015-03-22 21:13:27

标签: python json

我在我的请求数据主体中传递了一个json,如下所示: -

curl --data "data={"applist":{"ads":{"ad":[{"adsid":1,"view_points":25,"view_type":"full","comment":"Success"}]}}}" POSTURL

加载json后,会抛出错误: -

data = request.form
print json.loads(str(data.get('data'))) # throws an error

打印data.get('data')后,我得到{applist:{ads:{ad:[{adsid:1,view_points:25,view_type:full,comment:Success}]}}}这是不正确的json,因为缺少双引号("")。 如何加载json?

2 个答案:

答案 0 :(得分:0)

问题在于您通过curl发送的原始帖子。您使用双引号包围帖子数据,但也在帖子正文中使用双引号。最简单的解决方法是用单引号包围帖体:

curl --data 'data={"applist":{"ads":{"ad":[{"adsid":1,"view_points":25,"view_type":"full","comment":"Success"}]}}}' POSTURL

答案 1 :(得分:0)

首先,如果您使用的是Flask,则应使用request.json来获取已经解析过的json。为此,您需要在curl请求中设置内容类型:

-H "content-type: application/json"

其次,您的数据无效json。改为使用这个:

--data='{"applist":{"ads":{"ad":[{"adsid":1,"view_points":25,"view_type":"full","comment":"Success"}]}}}'