在做第三封登陆,取用户信息时,出现了错误
java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String
指示下面这行里有错误,类型转换错误
String qqicon = sp.getString("qqicon", "0");不可能啊, 数据里我就没有用到int 类型 怎么会出现类型转换 错误呢?
然后我按着这个值 往回摸 一步一步查 最后发现了
红色字体的这行 是最初得到值的地方
Set<String> set = data.keySet();
for (String string : set) {
if (string.equals("iconurl")) {
Log.e("123", "onComplete: "+data.get(string).toString() );
qqicon = data.get(string).toString();
} else if (string.trim().equals("name") ) {
Log.e("123", "onComplete: "+data.get(string).toString() );
qqname = data.get(string).toString();
}
}
这里 涉及到了Trim()函数 : Trim() 它的功能就是删除字符串首部和尾部的空格。
所以 取值时 因为json 串里 有 空格 所得到的 json 格式 不正确 , 导致 类型异常
解决: if (string.trim().equals("iconurl")) { 加上 trim() 就可以了
注 :
所以大家在请求 json 是要注意 格式 ,空格 斜杠 等 因素
都会导致 解析 出问题