Gsonはjsonとクラスの要素が違っても例外を吐かない
GsonはGoogle製のJava向けjsonパーサーライブラリ。
http://code.google.com/p/google-gson/
Gsonはパースするjsonがjsonの文法的に間違っている場合にのみJsonSyntaxExceptionを吐くらしい。
そっちのほうが都合がいいことが多いし自分が知らなかっただけなんだが、気付かずハマった。
例えば以下のコードは例外を吐かない。
public static class Data{ public String id; public String name; public String hoge; public String huga; } public static void main(String[] args) { String json = "{\"status\":\"error\"}"; Gson gson = new Gson(); Data data = gson.fromJson(json, Data.class); }
fromJsonがnullを返すことはないので、実際に任意のクラスの要素にパースできたかどうか知るには要素がnullかどうか調べればいい。
String json = "{\"status\":\"error\"}"; Gson gson = new Gson(); Data data = gson.fromJson(json, Data.class); if(data.id == null){ //fail }