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"}
现在,我假设:
这个回复是字典,对吗?这是一个JSON响应?
我也假设这意味着变量“flag”是一个JSON对象?
我的一个大问题:我是否应该能够将“flag”作为字典或JSON对象进行迭代?
对终端中返回的内容以及如何处理代码中的“flag”变量感到有点困惑。
答案 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 ,并对其进行任何更改。