2013-05-07 9 views
7

sto colpendo un servizio e, a volte tornare qualcosa di simile:Come dire se return è JSONObject o JSONArray con JSON-simple (Java)?

{ "param1": "value1", "param2": "value2" } 

e talvolta ottenere di ritorno in questo modo:

[{ "param1": "value1", "param2": "value2" },{ "param1": "value1", "param2": "value2" }] 

Come faccio a sapere che sto diventando? Entrambi restituiscono una stringa quando faccio getClass(), ma se provo a fare questo:

json = (JSONObject) new JSONParser().parse(result); 

sul secondo caso ottengo un'eccezione

org.json.simple.JSONArray cannot be cast to org.json.simple.JSONObject 

Come evitare questo? Vorrei solo sapere come controllare quale ritorno. (Il primo caso a volte contiene [] quindi non riesco a fare l'indice e mi piacerebbe un modo più pulito di controllare il primo carattere.

Ci deve essere un qualche tipo di metodo che controlli questo?

+0

Dovrebbe essere abbastanza semplice controllare se la stringa inizia e finisce con '[]'. Che cosa hai provato? – ApproachingDarknessFish

+0

Posso dire se si tratta e finisce con [], ma il problema è che ottengo una stringa "[{\" param1 \ "...}, {...}]" che non riesco a convertire di nuovo in un array. – PixMach

risposta

19

semplice Java:

Object obj = new JSONParser().parse(result); 
if (obj instanceof JSONObject) { 
    JSONObject jo = (JSONObject) obj; 
} else { 
    JSONArray ja = (JSONArray) obj; 
} 

si potrebbe anche verificare se la (presunta) JSON inizia con una [ o un { se si voleva evitare il sovraccarico di analisi del tipo sbagliato di JSON Ma attenzione con. spazi bianchi iniziali

+0

Grazie. Questo ha risposto alla mia domanda. Ora per capire il resto :) – PixMach

+0

Grazie Budy. :) – Krishna

Problemi correlati