推送解析:key为“url”的 value 值 null 变为“null” ,影响了后面的判断 if( !TextUtils.isEmpty(jumpPath))
解决方法: json.isNull(key) 和 json.optString(key,null)来处理 ,其中key是json 中的键值
message_extra的值
{"id":1,"push_key":"{\"authState\":null,\"type\":\"31\",\"url\":null,\"bean\":{\"id\":null,\"title\":\"test\",\"content\":\"conte\",\"type\":1,\"targetId\":\"208\",\"targetName\":\"测试banner无链接\",\"targetUrl\":null,\"gmtCreate\":null,\"gmtModified\":null}}"}
JSONObject jsonObject = new JSONObject(message_extra);
String push_key = jsonObject.getString("push_key");
JSONObject push_key_json = new JSONObject(push_key);
String jumpPath1 = push_key_json.getString("url"); 返回的是"null",不是null
String jumpPath2 = UiUtils.optString(push_key_json, "url"); 返回的是 null,
//用jumpPath1,会出现错误直接去执行else
if (!TextUtils.isEmpty(jumpPath)) {
}else{
}
UiUtils中的optString()方法如下:
/**
* 如果原本testdate的类型是String,会把null解析变成”null”
* 对于接下来判断uidata是不是空,例如 if("".equal(uidata)||null==uidata) 会出错
*
* @param json
* @param key
* @return
*/
public static String optString(JSONObject json, String key) {
if (json.isNull(key)) {
return null;
} else {
return json.optString(key, null);
}
}