首页 > 怎样在后端读取前端POST的json对象?

怎样在后端读取前端POST的json对象?

我想在前端通过Ajax 把一个json 对象(由字典生成),返回给后端。

经过测试,在后端通过request.args的数据结构是 ImmutableMuliDict:
文档上找到的资料是如下,所以我使用了copy()

后端的代码如下所示,我分别尝试了好多种方法但都不成功,返回结果分别如fixme1 fixme2 fixme3 fixme4 所示。

@app.route('/scan/pop_card', methods=['POST'])
def pop_card():
    if request.method == 'PUT':
        card = request.args
        print 1, type(card)
        print 2, card

        # card_info = json.load(card.copy())
        # fixme 1
        '''
        # File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/__init__.py", line 286, in load        # return loads(fp.read(),
        # AttributeError: 'MultiDict' object has no attribute 'read'
        '''
        card_json = card.copy().to_dict()  #
        # fixme 2 dict {}

        # card_info = json.loads(str(card.copy()))
        # fixme 3
        '''

        File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/__init__.py", line 338, in loads
        return _default_decoder.decode(s)
        File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/decoder.py", line 366, in decode
          obj, end = self.raw_decode(s, idx=_w(s, 0).end())
        File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/decoder.py", line 384, in raw_decode
        # raise ValueError("No JSON object could be decoded")
        #ValueError: No JSON object could be decoded

        '''

        card_info = json.dumps(card.copy())
        # fixme 4 str {}

        return '<h1> 200 </h1>', 200

最后的问题是,我应该怎样在后端读取这个 json 对象?


原谅我是个笨蛋。
我是题主,现在已经找到答案了。
根据flask.request 的文档 http://dormousehole.readthedocs.org/en/latest/api.html#flask.request

直接使用 request.data 即可得到我的数值,连转换也不用了。

【热门文章】
【热门文章】