在java中检查字符串是否为null

时间:2014-01-20 23:37:07

标签: java string

我有这个:

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的情况。因此,我知道数据为空,我可以看到它打印出来。

4 个答案:

答案 0 :(得分:2)

您的代码是反模式。移动在'try'块中处理'string'的代码。不要只捕获异常然后继续,就好像它们没有发生一样,并且必须再次排序 你是否处于有效状态。这就是“尝试”块的用途。如果你还在,你处于有效状态。

答案 1 :(得分:1)

如果json解析位失败,请不要将String object初始化为"" null

将您的第一行更改为:

String object = null;

更重要的是,请查看https://stackoverflow.com/a/21246501/599075

答案 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内容。 (对不起,如果我犯了一些语言错误)