2011-09-02 11 views
19

Jak sprawdzić, czy element jest obiektem JSONArray lub JSONObject. Napisałem kod, aby sprawdzić,Element sprawdzający JSON Java to JSONArray lub JSONObject

if(jsonObject.getJSONObject("Category").getClass().isArray()) { 

} else { 

} 

W tym przypadku, jeśli „kategoria” elementem jest JSONObject to działa dobrze, ale jeśli zawiera tablicę to rzucić wyjątek: JSONArray nie mogą być konwertowane do JSONObject. Proszę pomóż. Dzięki.

+0

http://stackoverflow.com/a/13100642/1318946 Sprawdź to ... Może Pomocne dla ciebie .. –

Odpowiedz

25

Tak, ponieważ getJSONObject("category") spróbuje przekonwertować ten String na JSONObject, co spowoduje wyświetlenie JSONException. należy wykonać następujące czynności:

Sprawdź, czy ten obiekt jest JSONObject za pomocą:

JSONObject category=jsonObject.optJSONObject("Category"); 

który zwróci JSONObject lub null jeśli obiekt category nie jest obiekt JSON. Następnie należy wykonać następujące czynności:

JSONArray categories; 
    if(category == null) 
     categories=jsonObject.optJSONArray("Category"); 

który zwróci JSONArray lub null, jeśli nie jest to ważne JSONArray.

+0

Świetne Ovidiu. Dzięki. – Neetesh

+0

Nie ma za co! –

+0

żaden nie mogę wymyślić ... –

0

Możesz użyć instanceof, aby sprawdzić typ uzyskanego wyniku. Wtedy możesz sobie z tym poradzić, jak chcesz.

0
  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()); 
       } 
      } 
16

Nawet jeśli masz swoją odpowiedź, ale mimo to może pomóc innym użytkownikom ...

if (Law.get("LawSet") instanceof JSONObject) 
{ 
    JSONObject Lawset = Law.getJSONObject("LawSet");       
} 
else if (Law.get("LawSet") instanceof JSONArray) 
{ 
    JSONArray Lawset = Law.getJSONArray("LawSet"); 
} 

Tutaj Law jest inny JSONObject i LawSet jest kluczem, który chcesz znaleźć jako JSONObject or JSONArray.

+0

Dzięki doskonale powinienem zweryfikować obiekt i tablicę .. Więc dostałem rozwiązanie !!!!! :) –

+0

Wow ... Uratowałem mój dzień ... Dzięki @Vikas. –

Powiązane problemy