しかし、そのgsonにも、これはないんじゃない?的な結果になることがいくつかあります。
そのいくつかはこんな感じ。
- <T> T Gson#fromJson(String json, Type typeOfT) で第一引数にnull渡すと結果がnull
- <T> T Gson#fromJson(String json, Type typeOfT) で第一引数にから文字渡すと結果がnull
- <T> T Gson#fromJson(Reader json, Class<T> classOfT) で第一引数がのReaderが即EOFになると結果がnull
そうなんです。解析できない系のインプットが入ると、結果がnullになっちゃうんです。
1は、妥当だと思いますが、2,3は例外はくかデフォルトで生成したオブジェクト返せよ!って感じがします。
ということで結果のnullチェックが必要になるという残念な感じになっています。
これ気に入らないなら、Null Object Supportを使えよって話ですね。しかしこれではインプットがnullだからそうなっているのか、空文字系("")だからそうなるのかわかりません。
個人的な考えでは、前者はバグで後者はデータ不正ですね。
ここまでは気を付けるよの話なんですが、問題は
- JSON構文エラーの際に発生する構文エラーがRuntime系の例外
です。そうなんです。コンパイラーでのチェックができないという残念な結果になります。
・・・外部からインプットするJSONの構文チェックは当然すべきであり、これがランタイムになるというのはちょっと理解できないです。
みなさん、こういうのってどうしてるんでしょうか。
0 件のコメント:
コメントを投稿