【发布时间】:2016-08-27 17:50:44
【问题描述】:
我正在开发一个烧瓶网络应用程序,其中客户端以以下形式将数据发布到服务器:
{
"sess_id" : 1 ,
"annotations" :
[ {"tag_start" : "TIME","tag_end" : "TIME","tag" : "YOUR_TAG"}, {"tag_start" : "TIME","tag_end" : "TIME","tag" : "YOUR_TAG"}, {"tag_start" : "TIME","tag_end" : "TIME","tag" : "YOUR_TAG"}]
}
这是完整的 Ajax 帖子...
$.ajax({
url: 'http://127.0.0.1:5000/api/saveannotation',
type: 'POST',
headers: {'Content-Type' : 'application/json'},
data: {'sess_id' : $('#sessionid_area').val(),
'annotations': JSON.parse(annotations)},
success: function(data) { alert(data.status); }
});
所以我什至可以在 api 端看到这个,它是这样定义的:
@sessionapis.route('/saveannotation', methods=['GET', 'POST'])
@login_required
def save_annotation():
rData = request.data
if request.method == 'GET':
return jsonify({'status' : 'success GET'})
else:
return jsonify({'status' : 'success'})
问题是数据是“字节”类型,而不是字典。我也无法调用 request.json 或 request.get_json(silent=True),它返回“400 bad request”。
这是 request.data 中的示例:
b'sess_id=1&annotations%5B0%5D%5Btag_start%5D=2...
由于某种原因,它似乎是 url 编码的。值也是空的。如果我选择做一些疯狂的事情,比如省略 content-type = json;我可以得到类似字典的东西,但我必须非常奇怪地访问它。我没有获得单个对象,而只是对所有属性的平面访问。
关于如何将 json 解析为合理的对象有什么想法吗?
感谢任何提示!
【问题讨论】: