以下是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
注意:缩进是完美的,没有间距错误
答案 0 :(得分:2)
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
获得第二个值。
答案 1 :(得分:1)
for each in data['error']:
请注意data['error']
是一个字典,因此for each in data['error']
正在迭代dict,这意味着each
是dict的关键,可能是" class"或者"消息",无论如何,each
是一个字符串,只能由int
编入索引。
你的json数据应该是:
{
"error": [{
"class": "com.attask.common.AuthenticationException",
"message": "Authentication Exception: Authentication Exception: {0}"
}]
}