javaでJSON

javaでjson扱うのは何がいいか調べてたらJacksonが良さそうなので使ってみた。
使ったのは最新verだった2.1.4のcore。

web上のjsonを扱いたいのでまずはwebから取得。

次にjacksonでjsonをパース。
ここで想定しているjsonは

みたいな形。

上記の形のデータが変数jsonに入ってるとした時のパース処理が以下。

this.set*はただのセッター。
パース処理の流れは、

  1. while (parser.nextToken() != JsonToken.END_OBJECT) { でデータが終わるまでループ
    JsonToken.END_OBJECT はオブジェクトの終了の文字。つまり } のこと。
  2. String name = parser.getCurrentName(); でフィールド名を取得
  3. フィールド名がnullでなければ、paserを次のトークンに動かす。
  4. if(name.equals("*")) でフィールド名に応じた処理
    getText()は現在のトークンの文字列を取得するメソッド。
詳細情報のセッターの引数の parseDetails(parser) は、詳細情報用の処理を分けたもの。詳細情報はarrayなので、直に書くと見にくい。
parseDtailsの宣言は ArrayList<Details> parseDetails(JsonParser parser)
処理は、

while(parser.nextToken() != JsonToken.END_ARRAY) の JsonToken.END_ARRAY はArrayの終了文字 ] のこと。あとは、メインの処理と同じようにして、Detailを作ってArrayListにして返すだけ。

javaでJSON” への3件のコメント

  1. Jackson使用方法のきっかけとして、直接的に使えるサンプルをお示しいただいて非常に助かりました。
    ありがとうございます。

名無しさん にコメントする コメントをキャンセル

メールアドレスが公開されることはありません。

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">