无法迭代JSON d

2024-09-24 22:30:54 发布

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

我正在尝试通过JSON数据来查找特定键的值。我的数据来自http请求,数据如下所示:

{'1': {'manufacturername': 'SVLJ',
       'modelid': 'TCL014',
       'name': 'Fling'},
'10': {'manufacturername': 'SONY',
    'modelid': 'BLL4554',
    'name': 'ACQ'}}

我当前的目标是循环遍历每个项目编号(1、10等),并获取light的值(“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文件(生的)_回复.text);但是,它仍然被识别为一个字符串,而不是一个iterable json对象(可以被key引用)。任何和所有的洞察力将不胜感激。你知道吗


Tags: 数据namejsonurlgetrawresponsedef
3条回答

我认为问题出在JSON文件中。不允许单引号。你知道吗

我首先将单引号替换为双引号,这样:

{ "1": { "manufacturername": "SVLJ", "modelid": "TCL014", "name": "Fling" }, "10": { "manufacturername": "SONY", "modelid": "BLL4554", "name": "ACQ" } }

您可能会得到一个字符串,因为它不是有效的JSON。JSON需要"作为字符串,而不是'。你知道吗

json.org

A string is a sequence of zero or more Unicode characters, wrapped in double quotes, using backslash escapes.

当您执行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'])

相关问题 更多 >