gson

Google gson MalformedJsonException のパターン

Google gson で JSON読込みした時に発生する MalformedJsonException のパターンとは、以下の表にまとめることができる。 エラーのパターンは、これ以外あるかもしれないが、だいたいこんなところ。 例外のメッセージ エラーの意味 JSONエラーの例 Untermina…

MalformedException の捕捉処理を書き易くする。

Google gson の fromJson や JsonParser で発生する JSON書式エラー、MalformedException の捕捉を するとして、try~ctach 文の中に書いてもいいのですが、 1つのロジックで何回もJSON読込みの必要な処理があって、毎回 catch文の中で MalformedException …

Generic JsonDeserializer

先日、Gsonデシリアライザ ラムダで。 - Oboe吹きプログラマの黙示録 や、 Gsonデシリアライザ、汎用化? - Oboe吹きプログラマの黙示録 を書きましたが、 再考して、以下に至りました。 JsonDeserializer実装生成で目標のインスタンスの Supplier と JsonDe…

Gsonデシリアライザ ラムダで。

Gson のデシリアライザ、以下を用意すれば何でもリストをデシリアライズできる import java.lang.reflect.Type; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.function.Function; import com.google.gs…

Gsonデシリアライザ、汎用化?

久々に Google gson のデシリアライザを書いていて思いました。。 文字列のリスト、 import java.lang.reflect.Type; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import com.google.gson.JsonArray; import com.google…

GSON フィールド除外アノテーションを考えた。

Google gson には、@Expose というアノテーションを付与したフィールドだけを JSONシリアライズ対象に する機能があります。 でも逆に、特殊なアノテーションを付与してそのフィールドをシリアライズ対象外にする。 という機能がありません。 ほとんどが、ex…

JSON書式判定

書式として与える JSON または任意の JSON に対してその要素のキーを必須で持つかどうかを判定する処理を 普遍的に欲しくなりました。フォーマッタ―とまでは望まないけど、それに近い処理も、できれば充分です。 だって JSONを Object から JSON作成は、Goog…

jsTree JSON データの変換

ツリービューの情報を管理するのに、ノードの親子関係の処理を新たにコーディングするのは、どんな言語であれ 労力が必要です。 できれば、画面でツリーの描画操作の結果をそのまま管理するのが楽です。 せっかく JSON というオブジェクトで表現するのですか…

JSONのキーから、JsonElemnt 抽出を関数型インターフェースにする

JSONのキーから、JsonElement - Oboe吹きプログラマの黙示録 "." ドットで繋げたJSONのキーから JsonElement を抽出する これを更に、関数型インターフェースにする。Reader 、JsonElement 、JSON文字列、各々に対するパターンを 書いたが、JsonElement に対…

JSONのキーから、JsonElement

先日、JSONのキーを、GSONを使用してセパレータ "." ドットで繋げて値を取得するものを書いてみた。 oboe2uran.hatenablog.com でも、配列など JsonArray として取得して使用したい場合もあり要件が外れる時もある。 それに長ったらしいコードで気に要らない…

JSON のキーを指定して対象の値を取得

JSON → 任意のクラスオブジェクトに変換させることなく、 JSON のキーを指定して対象の値、valueを取得するものを汎用的なメソッドを用意しようと考えると 先日紹介した oboe2uran.hatenablog.com を超える機能のメソッドを作るのは難しい。 紹介した GitHub…

2つのJSONの差をラムダで処理する

Google gson の JsonParserを使用して 2つのJSONの差をラムダで処理するもの。 import java.io.Reader; import java.io.StringReader; import java.util.HashMap; import java.util.Map; import java.util.function.BiConsumer; import com.google.gson.Jso…

得体の知れない不明なJSON を GSON で解析する

キー名、値の型、ツリー構造が不明(定義を知らされてない)JSON を Google GSON でとりあえず認識させる。 このような要件定義はあり得ないけど、とにかく読み込ませてできる解析をする。 gson の JsonParser から取得する JsonElement を recursively なロ…

GSON の JsonArray を Stream で処理する

JsonArray は、Iterable実装だから、spliterator() より、StreamSupport で Stream 処理できる。json を読み込ませて JsonElement je = new JsonParser().parse(reader); if (je.isJsonArray()){ JsonArray jary = je.getAsJsonArray(); StreamSupport.strea…

Google gson Map null To empty String の入れ子

先日書いた MapSerializer oboe2uran.hatenablog.com入れ子でも、key : "" を適用させるには、、、registerTypeAdapter での登録に入れ子のパターンを書けばよい。 import com.google.common.reflect.TypeToken; import com.google.gson.Gson; import com.go…

Google gson Map null To empty String

Google gson で、toJson をする時、null → "" になるように、 NullStringToEmptyAdapterFactory なるものを書いていた。 もしくは、どこかのライブラリには似たようなものがあってそれを使ったりしていたが、 でもこれでは、Map に対しては効かない、Map にK…

Google gson fromJson で、 Map<String, Object> への変換は落とし穴。。。

Google gson fromJson を使用する場合、通常変換先は自分で用意するクラスがほとんどのケースであり、 であり、Object に変換させることはあまりやらない。 Gson gson = new GsonBuilder().serializeNulls().create(); Map<String, Object> map = gson.fromJson("{a:0}", new</string,>…

リストを作る時の fromJson 書式

Google gson でリストを復元する時の fromJson の書き方をよく忘れるのでメモ Gson gson = new GsonBuilder().serializeNulls().create(); List<Foo> list = gson.fromJson(string, new TypeToken<Collection<Foo>>(){}.getType());</collection<foo></foo>

GSON でjson生成時の null を処理する(2)

先日書いたGSON使用時の String型のNULLパターン { "aaa": "null" } でなくて、 { "aaa": "" } にするための TypeAdapterFactory を書き直しました。 import java.io.IOException; import com.google.gson.Gson; import com.google.gson.TypeAdapter; import…

GSON でjson生成時の null を処理する場合、

google GSON でJSONを生成する場合、そのままだと、nullオブジェクトは無視(出力されない)なので、GsonBuilder の serializeNulls() を呼び出して、 { "a": "null" } のように出す。 しかし、String オブジェクトの結果として、{ "a": "" } が欲しい場合が…

GSON と LocalDate / LocalDateTime のシリアライズ・デシリアライズ

Java7をやめてJava8で開発するようになり、java.util.Dateを使わなくなり、 Google gson で LocalDate / LocalDateTime をシリアライズ・デシリアライズするのに 簡単に書ける方法を探すのに苦労したのでその過程と結果です。 GsonBuilder の registerTypeAd…

JSONデータ→列挙型は、Google GSONが便利

Google gson を使用してJSONデータをJavaオブジェクトに変換する場合、列挙型への変換をする時としない場合の差異、、 以下のような JSONデータがあるとする。 [ { "time": "2015-01-11 10:27:14", "status": 200 } , { "time": "2015-01-11 11:02:48", "sta…

Wicket でJSONを返す。

Wicket で、JSONデータを返す方法は、WebPage の getRequestCycle() から、 void org.apache.wicket.request.cycle.RequestCycle.scheduleRequestHandlerAfterCurrent(IRequestHandler handler) メソッドを呼び出して IRequestHandler には、ResourceStreamR…

GSON で、JSON生成のメモ

任意に定義する Java クラス Object のリストを JSON にする時に、GSON を使用した理由 次の理由から、GSON が便利だった。 ・任意に定義する Java クラスの要素で出力対象の要素を限定できること。 ・デフォルトで Javaクラスのフィールド名が、JSONで Key…

GsonBuilder を使う。

Google の JSON ライブラリ、GSON を使う時、 普通に使う、new演算子での生成、 Gson gson = new Gson(); これをそのまま使うと、java.util.Date は、以下のようになってしまう。 System.out.println( gson.toJson(new Date()) ); の結果は、、 "May 10, 201…

JSON を Wicket1.5 から出力

JSON データを Wikcet で出力するサンプル Google の GSON で書いてみた。 コンテンツタイプを、application/json と指定することになるようだ。 import org.apache.wicket.markup.html.link.Link; import org.apache.wicket.request.handler.resource.Resou…

Google の JSONライブラリ。。。GSON

JSON 用 Java ライブラリは、JSONIC だけではない。 Google に、GSON というのがある。 http://code.google.com/p/google-gson/ JSONIC にちょっと似ているが、encode/decode は、static メソッドではない。 Gson gson = new Gson(); String str = gson.toJs…