我有这个:
String object = "";
try {
object = data.getString("url");
System.out.println("Url Object:" + object);
}
catch (JSONException e) {
e.printStackTrace();
}
System.out.println("object is:" + object);
if (object!= null ) {
// doSomething
} else {
// is Null
}
虽然打印出来了:
object is: null
代码输入if条件而不是else。
我错过了什么?
编辑:数据是JSONObject。我现在想测试url为null的情况。因此,我知道数据为空,我可以看到它打印出来。
答案 0 :(得分:2)
您的代码是反模式。移动在'try'块中处理'string'的代码。不要只捕获异常然后继续,就好像它们没有发生一样,并且必须再次排序 你是否处于有效状态。这就是“尝试”块的用途。如果你还在,你处于有效状态。
答案 1 :(得分:1)
如果json解析位失败,请不要将String object
初始化为""
null
。
将您的第一行更改为:
String object = null;
答案 2 :(得分:1)
请注意,getString(..)
正在返回"null"
(String
,当ob.toString()
这样做时)。因此,当您将其分配到object
时,它是String: "null"
,而不是null
。
要以一种方式纠正您的代码:
if (!object.equals("null")) {
// doSomething
} else {
// is Null
}
如果object
返回null
,则另一种解决方案是将getString()
设为"null"
:
if (data.getString("url").equals("null"))
object = null;
答案 3 :(得分:1)
对你的案例唯一的解释是data.getString("url");
返回一个“null”字符串值。按照我推荐你这些观点的方式:
通过空引用(String object = null;
)
更改if
条件(if(object!=null) && !object.isEmpty()
)
否则,尝试将data
对象的内容完全打印到控制台,以便检查您尝试解析的json内容。
(对不起,如果我犯了一些语言错误)