我试图遍历JSON数据以查找特定键的值。我的数据来自http请求,数据如下:
{'1': {'manufacturername': 'SVLJ',
'modelid': 'TCL014',
'name': 'Fling'},
'10': {'manufacturername': 'SONY',
'modelid': 'BLL4554',
'name': 'ACQ'}}
我目前的目标是遍历每个项目编号(1,10等等)并获得光的价值(' fling',' acq'等等。 )。我的最新尝试是:
import requests
RESOURCE_URL = 'xxx/xxx/'
def get_json(url):
raw_response = requests.get(url)
data = raw_response.json()
return data
def get_SMR():
url = "{}SMR/".format(RESOURCE_URL)
return get_json(url)
smr_json = get_SMR()
for SMR in smr_json:
print(SMR['name'])
当我尝试运行时,我收到错误:
TypeError: string indices must be integers
我还尝试导入json库,并使用json.loads(raw_response.text);但是,它仍然被识别为字符串,而不是可迭代的json对象(可以通过键引用)。任何和所有的见解将不胜感激。
答案 0 :(得分:1)
当您执行for SMR in smr_json:
时,您正在迭代字典的键。换句话说,SMR
是一个字符串,不允许按字符串索引:
In [1]: SMR = 'test'
In [2]: SMR['string']
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
...
TypeError: string indices must be integers
您的意思是迭代键和值:
for key, SMR in smr_json.items():
print(SMR['name'])
或者,只是值:
for SMR in smr_json.values():
print(SMR['name'])
答案 1 :(得分:0)
答案 2 :(得分:0)
我认为问题出在JSON文件中。不允许使用单引号。
我首先用双引号替换单引号',得到类似这样的内容:
{
"1": {
"manufacturername": "SVLJ",
"modelid": "TCL014",
"name": "Fling"
},
"10": {
"manufacturername": "SONY",
"modelid": "BLL4554",
"name": "ACQ"
}
}