我有一个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)。
谢谢
答案 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)