处理来自Python POST请求的响应

时间:2015-04-21 04:52:41

标签: python json loops dictionary python-requests

Python的新手,请耐心等待:

我正在使用强大的Requests模块向Facebook Graph API发出POST请求。这是我的代码:

#! /usr/bin/python
# -*- coding: utf-8 -*-
import requests 


access_token = '9DYWNDXKPsTUkW1TcFZA5E1gUsIhliA0wMc0YZAmcu2Qtd8MtJVW50Y2ZBpnjkw8FH8d5LTmm7AuJ35pQo5'
fburl = 'https://graph-video.facebook.com/v2.3/56914066/videos?access_token='+str(access_token)
payload = {'upload_phase': 'start', 'file_size': '6999244'}
flag = requests.post(fburl, data=payload).text
print flag 

我在Mac OSX机器上本地运行这个Python脚本,使用来自Terminal的Python 2.7。我从Facebook API获得的响应,在终端打印出来:

{"video_id":"635631120558","start_offset":"0","end_offset":"1048576","upload_session_id":"6356311891"}

现在,我假设:

  1. 这个回复是字典,对吗?这是一个JSON响应?

  2. 我也假设这意味着变量“flag”是一个JSON对象?

  3. 我的一个大问题:我是否应该能够将“flag”作为字典或JSON对象进行迭代?

    对终端中返回的内容以及如何处理代码中的“flag”变量感到有点困惑。

1 个答案:

答案 0 :(得分:2)

您的代码正在调用text对象的requests方法,因此( JSON )响应将转换为字符串,然后您将其打印出来。所以你无法对此进行迭代。

但是,如果您不调用text,则生成的对象应该是 JSON 对象(基于对 Facebook Graph API 的快速浏览) doc)你可以使用内置的json module进行迭代。请参阅解码JSON 部分。

e.g。如果您在代码顶部import json,则可以执行以下操作:

flagJson = requests.post(fburl, data=payload)
flagDict = json.loads(flagJson)

然后您可以像对待任何其他flagDict那样迭代dict

根据OP的后续评论进行编辑:

json.loads(flagJson) JSON 解码为 Python dict,然后可以将其用作任何其他{{1>} {{1>} 1}}会。这一切都取决于你想用它做什么。最有可能的是,如果你想以任何方式操纵它,你将需要解码它,因为你可以迭代它,更改值,以其他格式写出来,或重新编码回 JSON ,并对其进行任何更改。