[英]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;
請注意, getString(..)
返回"null"
(作為ob.toString()
的String
)。 因此,當您將其分配給object
,它是一個String: "null"
,而不是null
。
要更正您的代碼,一種方法是:
if (!object.equals("null")) {
// doSomething
} else {
// is Null
}
另一個解決方案是設置object
為null
如果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.