2012-07-03 12 views
13

Stavo controllando lo documentation per JSONObject quando ho notato i due metodi: getJSONObject(String key) e optJSONObject(String key). Dalla documentazione, ho pensato che facevano quasi la stessa cosa con una differenza: se la chiave o il valore non viene trovato, quindi getJSONObject() genera uno JSONException mentre optJSONObject() restituisce semplicemente null.getJSON vs. optJSON

  1. Ci sono altre differenze tra getJSONObject() e optJSONObject()?
  2. Quali sono i vantaggi di get su opt e viceversa?
  3. Ci sono situazioni specifiche in cui vorrei usare l'una sull'altra o dove l'uso di una è fortemente scoraggiato/proibito?
+0

Come per le domande 2 e 3, la risposta migliore sarebbe probabilmente il modo in cui si desidera gestire gli errori in base al contesto del codice. – honyovk

risposta

7

Un valore nel JSON può essere facoltativo, quindi l'utilizzo di optJSONObject è migliore perché è sufficiente verificare se è nullo o meno e continuare la propria funzione.

+0

Penso che se stai usando 'getJSONObject', dato che getterà l'eccezione, puoi gestire il formato JSON sbagliato più facilmente in' catch' se usi 'try catch' –

0

Sto usando optJSONObject nel mio file JSON con la chiave "frasi" e restituisce null ma il risultato corretto potrebbe JSONArray o String.

{ 
"sentences":[ 
    { 
    "trans":"làm", 
    "orig":"do", 
    "translit":"", 
    "src_translit":"" 
    } 
] 
} 
2

optString restituisce la stringa vuota ("") se la chiave specificata non esiste. getString genera una JSONException.