2013-10-02 38 views
-1

我有一個JSON文件。現在,我根據關鍵字查詢它,並將其保存到數組中。 問題是值可能爲空,空或字符串。 所以我的代碼有例外:在Java中空對空

NumberFormatException異常:輸入字符串:在sun.misc.FloatingDecimal.readJavaFormatString(來源不明)在 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)。

謝謝

+1

您使用的是什麼json解析器? –

+9

它看起來像字符串字面意思是「空」而不是「空」。 – Eric

+0

@SotiriosDelimanolis我使用jsonObject的getJSONArray。並從JSONObject中獲取JSONArray。 – Eric

回答

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!"); 
} 
+0

問題解決了!非常感謝你 – Eric

0

我認爲你有一個例外,因爲你是比較空的int。

您必須先檢查對象類型。

if(jsonStr instanceof Integer)

+0

在用'null'比較'int'的情況下會拋出'NullPointerException' – Ilya