gpt4 book ai didi

python - TypeError : string indices must be integers, not str with JSON 解析

转载 作者:行者123 更新时间:2023-11-30 22:19:59 25 4
gpt4 key购买 nike

我在尝试解析 JSON 文件时收到上述错误。

代码:

import json

data = open('output.json').read()

for host in data['ASSET_DATA_REPORT']['HOST_LIST']['HOST']:
print(host['IMAGE_ID'])

回溯:

Traceback (most recent call last):
File "json_format.py", line 11, in <module>
for host in data['ASSET_DATA_REPORT']['HOST_LIST']['HOST']:
TypeError: string indices must be integers, not str

JSON:

{
"ASSET_DATA_REPORT": {
"HOST_LIST": {
"HOST": [
{
"IP": {
"network_id": "0"
},
"TRACKING_METHOD": "EC2",
"ASSET_TAGS": {
"ASSET_TAG": [
"EC2 Running",
"IF - Database - MySQL",
]
},
"DNS": "i-xxxxxxx",
"EC2_INSTANCE_ID": "i-xxxxxx",
"EC2_INFO": {
"PUBLIC_DNS_NAME": "ec2-xxxxxxxx.amazonaws.com",
"IMAGE_ID": "ami-xxxxxx",
"VPC_ID": "vpc-xxxxxx",
"INSTANCE_STATE": "RUNNING",
"PRIVATE_DNS_NAME": "ip-xxxx.ec2.internal",
"INSTANCE_TYPE": "m3.xlarge"
}
}
]
}
}
}

由于某种原因,host 似乎是一个字符串,我不知道如何克服这个错误。

最佳答案

导入 json 是不够的。 data = open('output.json').read() 只是将其视为任何其他文件。

TypeError:字符串索引必须是整数,而不是 str 没有提示 'HOST' 键; data['ASSET_DATA_REPORT'] 本身也无效,因为整个内容都是一个字符串。

尝试:

with open('output.json') as infile:
data = json.load(infile)

正如 @Milton Arango G 所指出的,您发布的 JSON 中有一个错误。变化:

"IF - Database - MySQL",

至:

"IF - Database - MySQL"

之后,您可以通过以下方式获取'IMAGE_ID'字段:

print(data['ASSET_DATA_REPORT']['HOST_LIST']['HOST'][0]['EC2_INFO']['IMAGE_ID'])

关于python - TypeError : string indices must be integers, not str with JSON 解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48938042/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com