APIなどを作っているときに、やたらとJSON Exceptionが起こるので、イヤになっちゃう人もいるはず…
たとえば、intが返ってくるはずだったAPIがnullだったりすると、
json.JSONException: Value null at weight of type org.json.JSONObject$1 cannot be converted to int
となって、JSONExceptionがおこっちゃいます。
次のようにしてもムダです。
JSONObject row = delivery_array.getJSONObject(i); if(row.getInt("weight")!=null) { weight = row.getInt("weight"); }
row.getInt("weight")
の時点でweightがnullだとJSONExceptionになっちゃうからです。
この値はnullになりそうだ、という場合は先にisNullでnullじゃないかを判定しておきましょう。
JSONObject row = delivery_array.getJSONObject(i); if(!row.isNull("weight")) { weight = row.getInt("weight"); }
追記(2016/11/15)というよりこっから先のほうが参考になるかも
実は、JSONObjectにoptStringとかoptIntという関数があるようです!
https://developer.android.com/reference/org/json/JSONObject.html#optString(java.lang.String)
知らなかったー!!
これを使えば、このキーのJSON自体が存在しない場合、nullなどを返してくれるので、JSONExceptionでブチ落ちて即死という事態を防げます。
(参考)JSON: the difference between getString() and optString()
http://stackoverflow.com/questions/13790726/json-the-difference-between-getstring-and-optstring/13790789
Googleのサンプルコード見てて、この関数の存在に気づきました。