iT邦幫忙

1

JSONObject判斷獲取到空值

怎麼判斷下列其中一項是空值的話把該項填入null這個字串呢,因為如果是空值的話輸出就不會顯示出來甚麼,我想讓他輸出null......

JSONObject data;
for (int i = 0; i < list.length(); i++) {
data = list.optJSONObject(i);
mSearchList.add(data.optString("o") + " " + data.optString("u")
+ " " + data.optString("a")+ " " + data.optString("b")
+ " " + data.optString("c")+ " " + data.optString("d")
+ " " + data.optString("e")+ " " + data.optString("f")
+ " " + data.optString("g")+ " " + data.optString("h")
+ " " + data.optString("i")+ " " + data.optString("j")
+ " " + data.optString("k")+ " " + data.optString("l")
+ " " + data.optString("n"));}
看更多先前的討論...收起先前的討論...
fillano iT邦超人 1 級 ‧ 2017-01-14 13:11:20 檢舉
先確定一下你說的空值是什麼...空字串嗎?還是null?
fillano iT邦超人 1 級 ‧ 2017-01-14 13:16:50 檢舉
如果是說null,optString可以接受兩個參數。

另外,下次問問題先提示一下你在幹什麼,(開發Android之類)不然回答的人可能猜錯你用的程式語言。
seeyounow iT邦新手 5 級 ‧ 2017-01-16 09:30:23 檢舉
應該是空字串才對,因為抓下來的json是從""獲取,如果裡面有值"T"就會獲取T,謝謝你的建議,是在Android使用的語言,感謝提議
seeyounow iT邦新手 5 級 ‧ 2017-01-19 11:25:29 檢舉
最後是利用.length()==0判斷 感謝各位解答

1 個回答

1
海綿寶寶
iT邦大神 1 級 ‧ 2017-01-16 13:53:43
最佳解答

參考看看資料來源

public static String optString(JSONObject json, String key)
{
    // http://code.google.com/p/android/issues/detail?id=13830
    if (json.isNull(key))
        return "null";
    else
        return json.optString(key, null);
}
看更多先前的回應...收起先前的回應...
seeyounow iT邦新手 5 級 ‧ 2017-01-17 16:52:02 檢舉

我想問是我真沒救了嗎,我好像怎麼看都沒辦法把我的例子改成這樣,因為是一串多個.optString的輸出,並且是return方式,嘗試過後失敗,請原諒我真的那麼問了....

改用這個試試看

JSONObject data;
for (int i = 0; i < list.length(); i++) {
data = list.optJSONObject(i);
mSearchList.add(data.optString("o","null") + " " + data.optString("u","null")
+ " " + data.optString("a","null")+ " " + data.optString("b","null")
+ " " + data.optString("c","null")+ " " + data.optString("d","null")
+ " " + data.optString("e","null")+ " " + data.optString("f","null")
+ " " + data.optString("g","null")+ " " + data.optString("h","null")
+ " " + data.optString("i","null")+ " " + data.optString("j","null")
+ " " + data.optString("k","null")+ " " + data.optString("l","null")
+ " " + data.optString("n","null"));}
seeyounow iT邦新手 5 級 ‧ 2017-01-18 09:15:21 檢舉

這樣好像無效,因為""還是會被寫進去,不過真的謝謝海綿大了,我再努力解決看看。

資料總共有四種可能:

  1. 有 Tag 有非空字串
  2. 有 Tag 的空字串("")
  3. 有 Tag 而沒資料(null, 不是字串)
  4. 沒有 Tag
    上面附的寫法是處理情形 1,3,4
    而你的情形可能是第2種
    就得照fillano大大說的
    自己寫一個method
    判斷資料長度=0時
    回傳 "null" 字串
seeyounow iT邦新手 5 級 ‧ 2017-01-18 09:50:10 檢舉

謝謝海綿大的方向~

我要發表回答

立即登入回答