从python检索JSON有效字符串请求.post()

2024-09-30 20:20:52 发布

您现在位置:Python中文网/ 问答频道 /正文

在尝试了一些可能的解决方案之后,我感到非常困惑,并且得到了各种各样的错误,这些错误只会让我陷入困境。我有一个函数,它可以抓取一条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'}


Tags: 文件函数txtjsongetreturn字典错误
2条回答

在requests模块中使用.json()以JSON的形式获取响应

例如:

data = r.json()
return data.get('tweet')

注意:json.dumps文件将响应转换为字符串对象

根据注释编辑-尝试使用ast模块。你知道吗

例如:

import ast
data = ast.literal_eval(r.text)

您需要使用.json()方法。请参阅请求文档:JSON Response Content

另外,供日后参考,不如这样做

f.write(json.dumps(jsonFile))

您可以简单地使用:

json.dump(jsonFile, f)

与使用load而不是loads相同:

jsonObject = json.load(f)

相关问题 更多 >