首页 > 解决方案 > json.loads TypeError:字符串索引必须是整数

问题描述

这是JSON文件的内容

{
"error": {
"class": "com.attask.common.AuthenticationException",
"message": "Authentication Exception: Authentication Exception: {0}"
}
}

这是我试图解析上述内容的代码。相同的代码可以很好地解析其他 JSON 文件。但是在解析上述内容时,我收到一个错误“TypeError:字符串索引必须是整数”。

import json                                     
fObj = open("attask1.json","r");                
res = fObj.read().encode('utf-8');              
fObj.close();
data = json.loads(res);                         
for each in data['error']:                      
    WFErrorClass = each['class'];
    WFErrorMessage = each['message'];
    print WFErrorMessage;
    print WFErrorClass;

任何人都请解释它为什么会发生并建议我如何克服这个问题

任何帮助是极大的赞赏。

Python 版本为 2.7.14

注意:缩进是完美的,没有间距错误

标签: pythonjsonpython-2.7

解决方案


each运行时不再是字典而是字符串:

for each in data['error']:

    print(each) # Returns 'class'

相反,您需要的是:

WFErrorClass = data['error']['class'];
WFErrorMessage = data['error']['message'];
print WFErrorMessage;
print WFErrorClass;

由于error获取字典的第一部分和message/class获取第二个值。


推荐阅读