我在我的请求数据主体中传递了一个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?
答案 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"}]}}}'