python - TypeError:字符串索引必须是通过嵌套字典迭代的整数
问题描述
我正在尝试从 json api 响应中提取一些配置信息。它确实循环通过父键,但不会检索嵌套在它们下面的值。
我已经尝试通过它迭代
JSON 响应如下所示:
{
"Id": null,
"result": {
"methodName": {
"config_1": {
"x": "asdf",
"y": "sdfg"
}
"config_2": {
"1": {
"a": "qwer",
"b": "wert",
"c": {
"x": "xxxx",
"y": "zzzz"
}
"2": {
"a": "qwer",
"b": "wert",
"c": {
"x": "xxxx",
"y": "zzzz"
}
}
}
}
}
我的代码如下所示:
def get_hardware_config(*args):
my_url = f"""<url>"""
try:
print(f"Retrieving configuration information for hardware")
api_method = f"<methodName>"
out = api_get(
my_url=my_url, name=api_method, my_user=<username>, my_pass=<password>
)
for item in out["result"]["methodName"]["config_2"]:
config_id = item
print(f"{config_id}")
serial = item["b"]
print(f"{identification}")
chassis_type = item["c"]["x"]
print(f"{chassis_type}")
model = item["c"]["y"]
print(f"{model}")
except (SystemExit, KeyboardInterrupt):
raise
except Exception as e:
logger.exception(f"Exception occured")
return []
get_hardware_config(hardware_name, ip)
如果我只打印出项目,它工作正常
1
2
但是当我深入到项目下方时,它会得到
Traceback (most recent call last):
File "./my_script.py", line 160, in get_hardware_config
serial = item["b"]
TypeError: string indices must be integers
请帮忙
解决方案
在您的循环中,item
只是字典键,即"1"
or "2"
。
但是你真正想要的是那个键的值。尝试这个:
for config_id in out["result"]["methodName"]["config_2"]:
item = out["result"]["methodName"]["config_2"][config_id]
serial = item["b"]
推荐阅读
- android - Android Studio:无需我干预即可编辑文件
- python - Python函数返回列表
- html - How to align divs like in chat?
- node.js - 使用增量循环函数
- android - 一些Android制造商杀死了FCM,但GCM曾经从多任务托盘中滑出
- azure - AADSTS90002:未找到租户“xx”。如果租户没有活动订阅,则可能会发生这种情况
- javascript - JQuery ScrollTop 工作,但只是暂时的?
- electron - 如何判断消息是来自主进程中的 send 还是 sendSync?
- javascript - 如何按内部结构对列表进行排序?
- kubernetes - 如何将临时数据存储到 Kubernetes 集群?