[英]checking a string for null in java
我有这个:
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的情况。 因此,我知道数据为空,并且可以看到它已打印。
您的代码是反模式。 将处理“字符串”的代码移到“ try”块中。 不要只是捕获异常,然后就好像它们没有发生一样继续进行,就必须再次弄清您是否处于有效状态。 这就是“ try”块的用途。 如果您仍在其中,则说明您处于有效状态。
不要初始化String object
,以""
如果你希望它是null
,如果JSON解析位失败。
将您的顶行更改为:
String object = null;
请注意, getString(..)
返回"null"
(作为ob.toString()
的String
)。 因此,当您将其分配给object
,它是一个String: "null"
,而不是null
。
要更正您的代码,一种方法是:
if (!object.equals("null")) {
// doSomething
} else {
// is Null
}
另一个解决方案是设置object
为null
如果getString()
返回"null"
:
if (data.getString("url").equals("null"))
object = null;
您的情况的唯一解释是data.getString("url");
正在返回“空”字符串值。通过以下方式,我向您推荐以下几点:
通过空引用初始化对象( String object = null;
)
更改if
条件( if(object!=null) && !object.isEmpty()
)
否则,请尝试将data
对象的内容完全打印到控制台,以便您可以检查要解析的json内容。 (对不起,如果我在语言上犯了一些错误)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.