在Java中空对空

时间:2013-10-02 20:08:46

标签: java

我有一个JSON文件。现在,我根据关键字查询它,并将其保存到数组中。 问题是值可能为空,null或字符串。 所以我的代码有例外:

  

NumberFormatException:对于输入字符串:“null”   at sun.misc.FloatingDecimal.readJavaFormatString(Unknown Source)at   java.lang.Float.parseFloat(未知来源)

这是我的代码:

for(int i=0, size=jsonStr.length; i<size; i++){

    if(jsonStr[i]==null){
        System.out.println("It's null");
    }else if(jsonStr[i].isEmpty()){
        System.out.println("It is empty!");
    }else if(Float.parseFloat(jsonStr[i])>=0){
        result[j]=jsonStr[i];
    }else{
      collect[j]=jsonStr[i];
    }


}

请问如何避免它? jsonStr中的值可以是“”,null或string(可以转换为float)。

谢谢

2 个答案:

答案 0 :(得分:2)

Float.parseFloat("null")会抛出NumberFormatException: for input string: "null"

所以,你的json看起来像{"str" : "null"}而不是{"str" : null} 对于这种情况,您应该使用"null".equals(...)

if(jsonStr[i]==null || "null".equals(jsonStr[i]))
{
   System.out.println("It's null");
}
else if(jsonStr[i].isEmpty())
{
   System.out.println("It is empty!");
}

答案 1 :(得分:0)

我认为你有一个例外,因为你正在将int与null进行比较。

您必须先检查对象类型。

if(jsonStr instanceof Integer)