在尝试了一些可能的解决方案之后,我感到非常困惑,并且得到了各种各样的错误,这些错误只会让我陷入困境。我有一个函数,它可以抓取一条tweet,将其放入字典,然后使用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")
然后在获取tweet之后,我想操纵它,我想使用我应该从这个请求中收到的JSON来操作它。你知道吗
r = grab_tweet()
data = json.dumps(r.text)
return data.get('tweet')
我希望上面的函数只返回与JSON中的tweet
键相关联的值,该键是我在保存和加载JSON时接收到的。但是,我不断得到以下错误:AttributeError: 'str' object has no attribute 'get'
,我对此感到困惑,因为根据我的理解,使用json.dumps()
应该创建一个JSON有效字符串,我可以调用get on。当我将此文件传输到文件或从文件传输时,或者当我收到请求时,是否存在编码错误?你知道吗
感谢您的帮助。你知道吗
编辑:
这里是我的requests.post
的一个响应示例,当我使用r.text
时,它看起来在响应中有一些Unicode,所以我在tweet部分的末尾放了一个示例。(这看起来也不像JSON,这正是我的问题的中心所在。至少应该有双引号和没有你的权利?)地址:
{u'tweet': u'RT THIS IS THE TWEET BLAH BLAH\u2026', u'language': u'en'}
在requests模块中使用.json()以JSON的形式获取响应
例如:
注意:json.dumps文件将响应转换为字符串对象
根据注释编辑-尝试使用ast模块。你知道吗
例如:
您需要使用
.json()
方法。请参阅请求文档:JSON Response Content另外,供日后参考,不如这样做
f.write(json.dumps(jsonFile))
您可以简单地使用:
json.dump(jsonFile, f)
与使用
load
而不是loads
相同:jsonObject = json.load(f)
相关问题 更多 >
编程相关推荐