无法访问JSON输出中的键:字符串索引必须为整数

时间:2019-07-05 11:36:39

标签: python json

我正在努力尝试从JSON输出中提取密钥。

请求输出以下JSON

for (;;);{"__ar":1,"payload":[{"id":"USERID","name":"USERNAME"}]}

这时我摆脱了“ for(;;);”为了获得有效的JSON:

json_header = (data.text).replace('for (;;);', '')

现在,我需要打印USERID和USERNAME。这是我尝试的方法:

json_data = json.dumps(json_header)
json_objects = json.loads(json_data)

print(json_objects['payload']['id'])

但是我明白了:

  

TypeError:字符串索引必须为整数

您能帮我解决代码吗?

1 个答案:

答案 0 :(得分:2)

我不确定json_headerjson_data之间的关系。 但是如果您的json是

{"__ar":1,"payload":[{"id":"USERID","name":"USERNAME"}]}

所以payload是字典数组。要访问数组中的第一个(也是唯一一个)字典,您可以执行以下操作:

payload = json_objects['payload']
first_elemet = payload[0]
id = first_element['id']
print(id)

或全部完成并准备执行:

import json
json_string = '{"__ar":1,"payload":[{"id":"USERID","name":"USERNAME"}]}'
json_objects = json.loads(json_string)
print(json_objects['payload'][0]['id'])

顺便说一句:带for循环的原始数据看起来很恐怖。如果这应该是JSON,则至少很奇怪,并且看起来像是您正在调用的任何后端中的错误。