JSONは外部のAPIや他システムと連携する際のデータフォーマットとしてよく用いられるフォーマットです。
プログラム内では受け取ったJSONデータをシステム内に取り込んだり、その逆を行ったりすることがあるため、JSONデータの操作が必要となります。
本ブログではこれまでに、JavaScript、Python、Java、Ruby、GoにおけるJSON操作について解説してきました。
本記事では、各言語JSON操作を比較しながらまとめていきます。
各言語における違いが分かったり、書き方を忘れてしまったときの復習用としても役立つ内容になっていますので、ぜひ最後までご覧いただければと思います。
本記事の最後に、各言語のソースコードを含む詳細内容を確認できる、関連ページへのリンクも用意しておきますので、気になる方はチェックしてみてください。
プログラミング言語のJSON操作まとめ
各言語のJSON操作として以下の内容を採り上げます。
- JSONを扱うモジュール・パッケージ・ライブラリ
- JSONファイルの読み込み
- 文字列からJSONオブジェクトへの変換
- JSONオブジェクトから文字列への変換
- JSONデータの参照
- JSONデータの追加
- JSONデータの削除
なお、言語によってはJSONデータの内容を予め用意したクラスや構造体などの定義にマッピングさせる方法と、マップや配列などにマッピングさせる方法があります。
本記事では自由にデータの追加や削除が可能な後者の方法をまとめていきます。
JSONを扱うモジュール・パッケージ・ライブラリ
言語 | JSONを扱うモジュール・パッケージ・ライブラリ |
---|---|
JavaScript
|
|
Python
|
|
Java
|
|
Ruby
|
|
Go
|
|
多くの言語ではJSONデータを扱うことが考慮され、JSONデータを操作する機能が標準で提供されているため、特別なことをする必要がありません。
Javaだけは、標準機能ではJSONデータを扱うことが困難なため、多くの場合において外部ライブラリに頼ることになります。
JSONファイルの読み込み
言語 | JSONファイルの読み込み |
---|---|
JavaScript
|
|
Python
|
|
Java(Jackson)
|
|
Java(Gson)
|
|
Ruby
|
|
Go
|
|
ファイルから読み込んだJSONデータをプログラム内で扱うには、JSONオブジェクトとして変換が必要になります。
変換方法はファイル情報を変換メソッドに直接指定する方法や、一旦文字列として読み込んで変換する方法が提供されています。
変換した情報は各言語が持つデータ構造に変換されますが、JSONはデータ形式がkeyとvalueを持つ構造になっているため、多くの言語はマップや連想配列に変換されてプログラムから扱えるようになります。
文字列からJSONオブジェクトへの変換
言語 | 文字列からJSONオブジェクトへの変換 |
---|---|
JavaScript
|
|
Python
|
|
Java(Jackson)
|
|
Java(Gson)
|
|
Ruby
|
|
Go
|
|
文字列からJSONオブジェクトへの変換方法は、各言語で専用のメソッドが提供されています。
JSONオブジェクトから文字列への変換
言語 | JSONオブジェクトから文字列への変換 |
---|---|
JavaScript
|
|
Python
|
|
Java(Jackson)
|
|
Java(Gson)
|
|
Ruby
|
|
Go
|
|
JSONオブジェクトから文字列への変換方法も、各言語で専用のメソッドが提供されています。
表示やファイル出力などする場合に、改行を入れて見やすくするための方法も提供されています。
JSONデータの参照
言語 | JSONデータの参照 |
---|---|
JavaScript
|
|
Python
|
|
Java(Jackson)
|
|
Java(Gson)
|
|
Ruby
|
|
Go
|
|
JSONデータの参照は、ネストするデータ構造に従ってアクセスします。
型に厳格なJavaとGoは、取得した情報を該当する型に変換しながらアクセスする必要があるため手間がかかります。
JSONデータの追加
言語 | JSONデータの追加 |
---|---|
JavaScript
|
|
Python
|
|
Java(Jackson)
|
|
Java(Gson)
|
|
Ruby
|
|
Go
|
|
JSONオブジェクトへのデータ追加方法は、追加対象となる型によって方法が異なります。
文字列や数値の追加であれば、どの言語も対象となるオブジェクトに対して、キー名を指定して値となるJSONを指定する方法となります。
配列への追加に関しては、Goは既存データに直接追加が出来ないため、少し手間がかかります。
JSONデータの削除
言語 | JSONデータの削除 |
---|---|
JavaScript
|
|
Python
|
|
Java(Jackson)
|
|
Java(Gson)
|
|
Ruby
|
|
Go
|
|
JSONオブジェクトのデータ削除方法は、各言語ともに削除メソッドや関数によって行います。
JavaScriptの配列は、deleteだと要素がundefinedとしてそのまま残ってしまうため、spliceを使う方法をおすすめします。
Goの配列は直接削除ができないため、追加と同じく新たな配列を作って置き換える方法となります。
JSONデータを自由に扱えるようになろう
最近では、JSON形式のデータをプログラム内だけではなく、ログやインフラ等の設定情報、保存用データなど様々な部分で使われることが増えてきました。
プログラマブルなデータフォーマットとして保存することで、プログラムで自由に解析をしやすくする意図があります。
ちょっとしたJSON解析プログラムを作ることで、今までExcelで集計していた業務を効率化することが出来たり、プログラムによってチェックすることで作業ミスを防止することも出来ます。
こうした日頃の作業をプログラマブルに出来ないか考えてみるのも良いと思います。
今回はJSON操作について各言語における操作方法を比較しながらまとめました。
ソースコードも含めた各言語の詳細が記述されている、関連ページヘのリンクを以下にまとめておきますので、気になる方はチェックしてみてください。
以上、参考になれば幸いです。
コメント