ダークエリア

SEのお仕事の備忘録や、ゲームの話などなどを記事に放り込む!!

Java Json⇔オブジェクト 相互変換 ライブラリ選定

https://qiita.com/takehiro224/items/6db2841c0abbf4ffb233

●開発環境

・Eclipse4.8 photon

・Java10

 

●やったこと

1.ライブラリの選定

 1.1.どんなライブラリがあるか

 1.2.使いやすさ、性能的な面でどれがよいか順序決め

 1.3.ライブラリのサポートは長く続くか調査

2.変換処理の共通化

 

●詳細

1.ライブラリの選定

 1.1.どんなライブラリがあるか

 ⇒とりあえず3つ選んだ

 ・Jackson

  使い方: Jackson使い方メモ

  DL:

   Home · FasterXML/jackson-core Wiki · GitHub

   Home · FasterXML/jackson-databind Wiki · GitHub

   Home · FasterXML/jackson-annotations Wiki · GitHub

 ・Gson

  使い方: GSONの基本的な使い方

  DL: GitHub - google/gson

 Json-Simple

  使い方: json-simple - ksaitoの日記

  DL: Google Code Archive - Long-term storage for Google Code Project Hosting.

 

 1.2.使いやすさ、性能的な面でどれがよいか順序決め

 ⇒下記ページを参考に、性能テスト。

blog.motikan2010.com

 ⇒性能テストをした結果、Jackson>Gson>Simpleの順に早かった。

  プロジェクトはこちら。

  ソースフォルダtestを参照。

  ProjectJsonLibrary.zip - Google ドライブ

  ログはこちら。

  ProjectJsonLibrary_コンソール記録.txt - Google ドライブ

 

 1.3.ライブラリのサポートは長く続くか調査

  ⇒アップデート状況や、掲示板など、直近で動きがあるかどうかで判断。

  また、Jacksonはアメリカの会社が作っていることもあって、

  Jacksonに決定。

 

2.変換処理の共通化

   ソースフォルダsrcを参照。

  ProjectJsonLibrary.zip - Google ドライブ

 

※その他

JUnitテスト 入れ子にする方法⇒public static classにする

 入れ子構造になっているJUnit4テストの書き方 · GitHub

・なぜMapなのか?

 さいしょは独自で作ったBeanクラスに格納して~と考えていたけど、

 現場で相談したところ、値を取得するのにMapもBeanも方法は変わらないし、

 Beanを作ったり、複数のアプリケーションで持つのは面倒なのでMapでよい。

 と。まったくそのとおりだなぁ。。

 まぁメリットデメリットあるので、その都度って感じですが。

 

※その他参考ページ

*Jackson

Jacksonの便利な使い方 [初心者向け]

Java/JSON Jacksonを使ってみる マッピング編 - だちはだ日記

*Gson

第29回 JavaオブジェクトとJSONオブジェクトの変換に便利な「Google Gson」:本格派エンジニアの工具箱|gihyo.jp … 技術評論社