繁体   English   中英

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

[英]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;

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

请注意, getString(..)返回"null" (作为ob.toString()String )。 因此,当您将其分配给object ,它是一个String: "null" ,而不是null

要更正您的代码,一种方法是:

if (!object.equals("null")) {
   // doSomething
} else {
   // is Null
}

另一个解决方案是设置objectnull如果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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM