2012-07-03 14 views
13

Przeglądałem documentation dla JSONObject, gdy zauważyłem dwie metody: getJSONObject(String key) i optJSONObject(String key). Z dokumentacji wynika, że ​​zrobili prawie to samo z jedną różnicą: jeśli klucz lub wartość nie zostanie znaleziona, wówczas getJSONObject() wyrzuca , a po prostu zwraca null.getJSON vs. optJSON

  1. Czy są jakieś inne różnice między getJSONObject() i optJSONObject()?
  2. Jakie są zalety get w stosunku do opt i odwrotnie?
  3. Czy istnieją szczególne sytuacje, w których chciałbym skorzystać z jednej lub drugiej sytuacji, w której korzystanie z nich jest zdecydowanie odradzane/zabronione?
+0

Jak w pytaniach 2 i 3, najlepszą odpowiedzią byłaby prawdopodobnie obsługa błędów w zależności od kontekstu kodu. – honyovk

Odpowiedz

7

Wartość w JSON może być opcjonalna, więc użycie parametru optJSONObject jest lepsze, ponieważ wystarczy sprawdzić, czy jest on pusty lub nie i kontynuować działanie.

+0

Myślę, że jeśli używasz 'getJSONObject', ponieważ spowoduje to wyjątek, możesz łatwiej obsługiwać niewłaściwy format JSON w' catch' jeśli użyjesz 'try catch' –

0

Używam optJSONObject do mojego pliku json z kluczem "zdania" i zwraca on null, ale poprawny wynik może JSONArray lub String.

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

optString zwraca pusty ciąg (""), jeśli podany klucz nie istnieje. getString generuje wyjątek JSONException.

Powiązane problemy