【问题标题】:Check for empty string null?检查空字符串是否为空?
【发布时间】:2015-06-12 12:40:42
【问题描述】:

我有一个 json,其中 userId 属性以字符串“null”的形式出现 -

"userId":"null"

我有一个方法可以检查我的字符串是否为空 -

public static boolean isEmpty(String value) {
    return value == null || value.isEmpty();
}

但是每次我上面的方法以false 的形式返回我上面的userId?它应该是真的,因为 userId 是空的。 Guava 或 Apache Commons 中是否有其他 api 可以做到这一点?

【问题讨论】:

  • 您是否还检查了等于“null”的字符串,例如 value.equals("null")?
  • @copeg 而不是那样做 - 有没有其他图书馆可以为我做到这一点?
  • @david 可能有一些库会检查 null 并为空,但我认为他们不会检查字符串“null”。
  • 您的方法返回false,因为该字符串不是null 或空的——它是"null"——换句话说,一个由4 个字符组成的字符串。请注意,"null"null 不同。如果您的意思是“没有价值”,那么 JSON 应该是这样的:"userId":null(注意:null 周围没有引号)。
  • 你首先应该尽量不要在你的 json 中有一个值为“null”的字符串......

标签: java string guava apache-commons


【解决方案1】:

null 不等于字符串"null"null 表示给定对象尚未被赋值,其中字符串"null" 是有效对象。它包含字符null,这是字符串的有效值。您还需要检查该值是否为文字字符串 "null" 才能执行您想要的操作。

正确检查

return value == null || value.isEmpty() || value.equals("null") ;

如果您仍想将 "null" 保持为有效用户名,则将发送 json 的任何内容更改为以下格式,该格式应解释为文字 null 而不是内容为 "null" 的字符串

"userId":null

【讨论】:

  • 如果有人想要 userId “null”怎么办?
  • @BarbiePylon 如果他可以访问生成 Json 的任何内容,那么我添加的编辑应该可以工作。如果不是,那么他就不走运了,因为使用字符串 "null" 代替文字 null 则无法区分两者。
  • 我同意你的观点,这是 OP 需要做出决定的事情。我只是想我会指出来!
【解决方案2】:

“null”不等于null。

“null”是单词“null”的长度为4个字符的字符串。

null(没有引号)就是这样--什么都没有。

【讨论】:

    【解决方案3】:

    {"userId":"null"} 在 java 中等于 String userId = "null"

    {} 在未编组时等于 String userId = null

    【讨论】:

      猜你喜欢
      • 2015-06-05
      • 1970-01-01
      • 2017-08-19
      • 1970-01-01
      • 2014-09-22
      • 1970-01-01
      • 2011-04-05
      • 2011-11-25
      相关资源
      最近更新 更多