Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 对象没有JSON属性_Python_Json - Fatal编程技术网

Python 对象没有JSON属性

Python 对象没有JSON属性,python,json,Python,Json,我正在尝试将API的输出打印到本地json文件中,以便搜索该文件 我试着查看符号的类型,看看对象类型是什么,但没有任何运气。在静态类型语言中,由于明确地知道类型是什么,所以排除故障比较容易。是否有解决此类问题的好方法 symbols = urllib.request.urlopen("https://cloud.iexapis.com/stable/ref-data/symbols?format=json&token={}".format(key)) symbols.json.load

我正在尝试将API的输出打印到本地json文件中,以便搜索该文件

我试着查看
符号的类型
,看看对象类型是什么,但没有任何运气。在静态类型语言中,由于明确地知道类型是什么,所以排除故障比较容易。是否有解决此类问题的好方法

symbols = urllib.request.urlopen("https://cloud.iexapis.com/stable/ref-data/symbols?format=json&token={}".format(key))

symbols.json.loads()
with open('data.json', 'w', encoding='utf-8') as f:
    json.dump(symbols, f, ensure_ascii=False, indent=4)

print(type(symbols))
我得到的错误是:

AttributeError: 'HTTPResponse' object has no attribute 'json'

这是因为
Json
是python中的一个库/包

symbols.json.loads() # wrong statement
为了使用json,您必须首先在文件中导入json包

import json
json.loads(symbols); # you have use statement like this.

您必须将变量或值传递给
loads()
函数。

解决此类问题的好方法是找到文档并阅读它。在模块
请求中,您有
响应。json()
@furas我阅读了文档,但找不到任何关于方法返回内容的说明。您可以使用
类型(符号)
以获取其类型。如果它是类,那么您可以使用
dir(symbols)
来获取它的方法和属性。您还可以检查
help(symbols)
@furas yea该类型是httpresponse,因此没有太大帮助。我已经尝试过使用dir了,但是当我回到家时,我会更仔细地查看方法和属性。也许我错过了。我应该包括文件的头,但我导入了JSON。为什么我可以对某些东西进行方法链,而在这种情况下,我必须将变量传递给它?不确定您的意思是什么,但如果您在文件中导入了json,请尝试
json.loads(符号)
如果您的文件没有导入json,那么如果api以json格式返回数据,为什么我需要解码“符号”数据?因为api以json格式返回数据,然后您必须使用python处理该数据。但python不理解json格式,它将其视为所有字符串值,json值是字符串。之后,您将转储数据,并使用
json.dump()
将python对象转换为json格式,使用
json.loads()
函数将json值转换为python对象。哇,我真傻。我完全读了那一节,却错过了那句话。吸取的教训。当我头脑清醒时,多休息一会儿。谢谢你的帮助!不鼓励只使用代码的答案。请点击并添加一些文字,总结您的代码如何解决问题,或者解释您的答案与之前的答案有何不同。
# symbols.json.loads() #-> it is httpresponse no attribute json
json_data = json.load(symbols)
with open('data.json', 'w', encoding='utf-8') as f:
    json.dump(symbols, f, ensure_ascii=False, indent=4)