如何檢查元素是否是JSONArray或JSONObject。我寫的代碼檢查,JSON Java檢查元素是JSONArray或JSONObject
if(jsonObject.getJSONObject("Category").getClass().isArray()) {
} else {
}
在這種情況下,如果元素「類別」是的JSONObject那麼它工作得很好,但如果它包含一個數組,那麼它拋出異常:JSONArray不能被轉換爲JSONObject的。請幫忙。 謝謝。
如何檢查元素是否是JSONArray或JSONObject。我寫的代碼檢查,JSON Java檢查元素是JSONArray或JSONObject
if(jsonObject.getJSONObject("Category").getClass().isArray()) {
} else {
}
在這種情況下,如果元素「類別」是的JSONObject那麼它工作得很好,但如果它包含一個數組,那麼它拋出異常:JSONArray不能被轉換爲JSONObject的。請幫忙。 謝謝。
是的,這是因爲getJSONObject("category")
會嘗試將String
轉換爲JSONObject什麼會拋出JSONException
。你應該做到以下幾點:
檢查對象是一個JSONObject
使用:
JSONObject category=jsonObject.optJSONObject("Category");
將返回一個JSONObject
或null
如果category
對象不是一個JSON對象。 然後你做到以下幾點:
JSONArray categories;
if(category == null)
categories=jsonObject.optJSONArray("Category");
將返回你JSONArray
或空,如果它不是一個有效的JSONArray
。
您可以使用instanceof
來檢查您得到的結果的類型。然後你可以隨心所欲地處理它。
if (element instanceof JSONObject) {
Map<String, Object> map = json2Java.getMap(element
.toString());
if (logger.isDebugEnabled()) {
logger.debug("Key=" + key + " JSONObject, Values="
+ element);
}
for (Entry<String, Object> entry : map.entrySet()) {
if (logger.isDebugEnabled()) {
logger.debug(entry.getKey() + "/"
+ entry.getValue());
}
jsonMap.put(entry.getKey(), entry.getValue());
}
}
String data = "{ ... }";
Object json = new JSONTokener(data).nextValue();
if (json instanceof JSONObject)
//you have an object
else if (json instanceof JSONArray)
//you have an array
標記生成器能夠返回更多類型:http://developer.android.com/reference/org/json/JSONTokener.html#nextValue()
即使你有你的答案,但它仍然可以幫助其他用戶...
if (Law.get("LawSet") instanceof JSONObject)
{
JSONObject Lawset = Law.getJSONObject("LawSet");
}
else if (Law.get("LawSet") instanceof JSONArray)
{
JSONArray Lawset = Law.getJSONArray("LawSet");
}
這裏Law
是其他JSONObject
和LawSet
是你想要找到的關鍵JSONObject or JSONArray
。
非常感謝我應該驗證對象和數組之間..所以得到了解決方案!!!!! :) –
哇...保存我的一天...謝謝@Vikas。 –
http://stackoverflow.com/a/13100642/1318946檢查它....可能對你有幫助.. –