不久前,我問了一個類似的問題,但還有其他問題。在Android中讀取多個JSON數組
我有一個有效的JSON陣列:
但是它不讀取task_goalid,因爲它是在JSON陣列的所述第二部分,誤差上來爲「否價值task_goalid」。
任何想法如何引用JSON數組的第二部分?
不久前,我問了一個類似的問題,但還有其他問題。在Android中讀取多個JSON數組
我有一個有效的JSON陣列:
但是它不讀取task_goalid,因爲它是在JSON陣列的所述第二部分,誤差上來爲「否價值task_goalid」。
任何想法如何引用JSON數組的第二部分?
你有一個JSONArray
含 JSONObject
孩子。
第一JSONObject
具有以下字段:
第二JSONObject
具有以下字段:
因爲你的第一個JSONObject
不不包含task_goalid
場,你贏了」不能從該對象中檢索它。如果該字段是可選的,那麼您可以檢查該字段是否先存在,然後嘗試使用JSONObject.has("task_goalid")
獲取該字段,或者使用JSONObject.optString("task_goalid", "No Value")
將其作爲可選字符串獲取。
使用JSONObject.has()
是更安全的選擇,因爲您可以明確地說出該字段是否存在。使用JSONObject.optString()
可讓您更輕鬆地將缺省值分配給缺少的字段。任何一種方法都可以工作,所以這取決於您的需求。
我將使用多個JSONObjects,我該如何特別從第二個JSONObject獲取字段? – user1876202
第二個對象位於索引1.要獲取第一個對象,請使用'jArray.getJSONObject(0)'。要獲得第二個,你可以使用'jArray.getJSONObject(1)'。請注意,這不是做事的最佳方式,因爲您的數組可能並不總是每次都以相同的方式設置。最好是迭代你的數組,並且首先檢查哪個對象有你要查找的字段,並且只能得到具有必需字段的對象。 – MCeley
感謝您提供的詳細和非常明確的幫助!使用(1)爲我提供了目標ID! – user1876202
使用JSONObject.has()來檢查JSONObject是否包含密鑰或從JSONObject獲取密鑰的值之前。
例如你的情況:
String strgoalid;
if(json_data.has("task_goalid")){
//if json_data JSONObject contain task_goalid
strgoalid=json_data.getString("task_goalid")
}
else{
//if json_data JSONObject not contain task_goalid
strgoalid="default value here";
}
curlybrace什麼時候結束? for(int y = 0; y
Ihsan
它在日誌之後結束。 – user1876202
然後看看MCeleys的答案,它解釋了你的情況... – Ihsan