[英]Retrieving a JSON valid string from a python requests.post()
在尝试了几种可能的解决方案并遇到各种错误之后,我感到非常困惑。 我有一个函数,它将抓取一条推文,将其放入字典中,然后使用类似的dumps
将该字典写入文件中:
jsonFile = {}
jsonFile["tweet"] = tweet
jsonFile["language"] = language
with open('jsonOutputfile.txt', 'w') as f:
json.dump(jsonFile, f)
然后,我还有另一个python文件,该文件具有一个函数,如果我想在其他地方使用它,它将返回此jsonOutputfile.txt
的值。 我这样做是这样的:
with open('jsonOutputfile.txt') as f:
jsonObject = json.load(f)
return jsonObject
此功能坐在我的本地主机。 上面与保存和检索JSON文件有关的两个函数与我下面的其余函数是分开的,正如我希望的那样。
我还有另一个函数,它将使用python请求检索返回状态的值,如下所示:
def grab_tweet():
return requests.post("http://gateway:8080/function/twittersend")
然后在抓取该推文之后,我想对其进行操作,并且我想使用应该从该请求中接收到的JSON进行操作。
r = grab_tweet()
data = json.dumps(r.text)
return data.get('tweet')
我希望上面的此函数仅返回与保存和加载JSON时从JSON中的tweet
键关联的值。 但是,我继续收到以下错误: AttributeError: 'str' object has no attribute 'get'
,对此我感到困惑,因为从我的理解json.dumps()
使用json.dumps()
应该创建一个可以调用get的JSON有效字符串。 在与文件之间进行传输时,或者在收到请求时,是否存在编码错误?
任何帮助表示赞赏。
编辑:
这是我使用r.text
时来自requests.post
的响应示例,响应中似乎还包含一些Unicode,因此在tweet部分的末尾放置了一个示例。 (这也不像JSON,这也是我的问题所围绕的地方。至少应该有双引号,没有U的意思吗?):
{u'tweet': u'RT THIS IS THE TWEET BLAH BLAH\…', u'language': u'en'}
您将需要使用.json()
方法。 请参阅请求的文档: JSON响应内容
另外,供将来参考,而不是做
f.write(json.dumps(jsonFile))
您可以简单地使用:
json.dump(jsonFile, f)
与使用load
代替loads
:
jsonObject = json.load(f)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.