JSONとは?
JSONとはJavaScript Object Notationの略で、テキスト形式を用いたデータ記述言語の1つです。JavaScriptで定義されているオブジェクト表記法です。JSONの仕様は、RFCおよびIETFの標準規格で規定されています。同様にECMAでも仕様化されています。
【参考】:IETF STD90 RFC8259 JSON 【参考】:ECMA-404
JSONはわかりやすく言うと、テキスト形式でデータを保存し色々な用途に活用できるファイルのフォーマット(書式)です。読み方は「ジェイソン」です。テキスト形式で保存されるので初心者でも簡単に記述でき、JavaScriptだけでなく主要なプログラム言語から利用されています。
データ記述言語とは
データ記述言語を説明する前に、コンピュータの記述言語を説明します。コンピュータの記述言語としては、プログラムを実行するための言語としてプログラム言語が使われます。プログラム言語は事前に実行コードを生成するコンパイラ言語や、実行時に逐次解釈し実行するインタプリタ言語があります。
サーバ管理に広く用いられているスクリプト言語ですが、近年ウェブプログラミングでも広く活用されています。具体的には、JavaScript(ECMAScript)がウェブブラウザで用いられます。さらに、PerlやPython・PHP等のスクリプト言語が、プログラムコード実行からテキスト処理まで幅広く利用されています。
データ記述言語は上記プログラム言語に属しませんが、プログラム言語の処理結果や処理データを表示するために用いられます。具体的にはHTML等のマークアップ言語が該当します。マークアップ言語はスクリプトを処理したり、スクリプト言語を呼び出したりしますから、プログラム言語とデータ記述言語は密接に関係していると言えます。
このようにスクリプト処理が利用活用されていくと、より複雑なデータを取り込み処理する需要が高まってきました。この流れから、データ記述言語ではデータ構造を定義し共通化を図るとともに、そのデータを従来のバイナリ形式からテキスト形式で保存するニーズがさらに高まりました。
JSONの基本フォーマット
JSONのフォーマットは簡単なため、初心者でもすぐに覚えられます。記述はキー(名前)とバリュー(値)のペアでシンプルに記述していきます。
具体的には、以下の表記形式に従い記述します。
表記形式:基本規則
{ “名前”: 値 }
{ “名前”: 値 , “名前”: 値 }
{
“名前”: 値 ,
“名前”: 値 ,
“名前”: 値
}
基本規則についてもう少し説明します。
・キー(名前)とバリュー(値)のペア データは名前と値のペアで記述します。 名前と文字列の値はそれぞれダブルクォーテーション(”)で括ります。 シングルクォーテーション(’)は使用できません。
上記基本規則に加えて、以下の記述規定があります。
・波カッコ({})とコロン(:)の利用 データの最初と最後は波カッコ({})で括ります。 名前と値の間にコロン(:)を入れます。
・名前と値のペアの間にカンマ(,)を利用 名前と値のペアが複数ある場合は、名前と値のペアの間にカンマ(,)を入れます。
・配列は角カッコ([])で、ネストは波カッコ({})で記述 値を入れ子とする場合は配列表記とネスト表記が可能です。
【参考】:JSONの紹介
JSONのデータ型
JSONは以下のデータ型に対応しています。
・文字列 ダブルクォーテーション(”)で括った文字列で、特殊文字はバックスラッシュ(\)を先に付けます。
・数値 0から9の数字、符号、小数点、指数記号(Eとe)が使えます。 8進数と16進数は使えません。
・true、false 論理値で全て小文字で表記します。
・null ヌル値で全て小文字で表記します。
・オブジェクト JSONオブジェクトを波カッコ({})で入れ子にすることができます。
・配列 角カッコ([])で括ることで、連続したデータ領域が割り当てられます。
JSONの利用メリット
ここでは、JSONを扱う上でどういったメリットがあるのかを紹介します。
表記形式がシンプル
JSONは表記形式がシンプルであることが最大の特長です。表記がテキスト形式なのでフォーマットが読みやすくデータ量が少ないため、軽量に処理を行うことができます。そのためJavaScriptでの利用のみならず、プログラム言語に依存しないデータ交換が可能です。
JSON以外では、XML(Extensible Markup Language)というマークアップ言語を用いる方法もあります。XMLではユーザが定義したタグを用いてデータ交換を行います。専門的な構文理解が求められることから、直接読み取ることが容易ではありません。このため初心者でも簡単に扱えるJSONの利用が拡大しています。
多くのプログラミング言語で利用できる
JSONはJavaScriptをはじめ、PythonやC++、Javaなど、多くの言語をカバーしているのもメリットの1つです。多くのプログラミング言語ではJSONを読み込める機能が備わっているため、利用しやすい特徴があります。
また、JSONはテキストベースなので、異なる言語間でもデータ交換が行えます。インストールの必要がなく、利用する上でのハードルも低いでしょう。
フロントエンド開発で活躍する
JSONと同じように、ReactやVue、AngularなどのフロントエンドフレームワークもJavaScriptをベースとしています。サーバからJSON形式でデータ受け取りを行う際には、加工が必要なく、そのまま利用できます。手間がかからないという利点は、フロントエンド開発においては価値が大きいでしょう。
JSONファイルとは
JSONファイルとは、JSONフォーマットで記述されたテキスト形式のファイルを指します。フォーマットとはあらかじめ決められた書式のことです。ファイルを使ったデータ交換に利用されており、ファイルの拡張子は.jsonです。冒頭述べた通りJSONフォーマットは、RFCおよびIETFそしてECMAで標準規格化されています。
JSONファイルの作り方
JSONファイルはテキストエディタやツールを用いて作成します。代表的なテキストエディタは、WindowsがNotepad・MacOSがTextEdit、LinuxがVim等です。より高度で複雑なJSONの編集を行う場合は、JSONに対応する作成ツール・エディタを使用します。
JSONファイルを扱うライブラリ
JSONファイルを作るにはテキストエディタや編集ツールを用いるほか、各プログラム言語のAPIを使用できます。JSONはプログラム言語に依存しないため、各種プログラム言語で利用します。
以下が各言語に対応するJSONファイルの作成・出力・読み込みAPIです。代表的なプログラム言語であるJavaScript・Java・Python・PHPのAPIをリストアップしました。
JavaScript
ファイルへの出力は、オブジェクトをJSON.stringify()でJSONデータ形式に変換し、writeFileSync()でファイルに出力します。ファイルの読み込みは、readFileSync()やreadFile()でファイルからJSONデータを読み込み、JSON.parse()でオブジェクトに変換します。
Java
JSONObjectクラスを用います。最初にimportでnet.sf.json.JSONObject、またはorg.json.JSONObjectのライブラリをインポートします。ファイルへの出力は、データをJSONObject.put()でJSONデータ形式に変換し、JSONObject.write()でファイルに出力します。ファイルの読み込みは、readLine()でファイルからJSONデータを読み込み、JSONObject.get()でオブジェクトに変換します。
Python
JSON APIを用い、最初に”import json”でライブラリをインポートします。ファイルへの出力は、出力用のファイルをopen()で読みこみ、次にオブジェクトをjson.dumps()でJSONデータ形式に変換し、writelines()でファイルに出力します。ファイルの読み込みは、同じくopenreadline()でファイルからJSONデータを読み込み、json.loads()でオブジェクトに変換します。
PHP
ファイルへの出力は、オブジェクトをjson_encode()でJSONデータ形式に変換し、file_put_contents()でファイルに出力します。ファイルの読み込みは、file_put_contents()でファイルからJSONデータを読み込み、json_decode()でオブジェクトに変換します。
JSONファイルの取得方法
JSONファイルはテキスト形式の.jsonファイルですので、FTPやHTTPで取得することができます。HTMLに取込み機能を実装する場合は、JavaScriptでXMLHttpRequest(XHR)APIを用います。XMLHttpRequest()を用いたJSONファイルの取り込み例は、HTML5やJavaScriptのデベロッパコミュニティであるMDNに掲載されていますので、ご確認ください。
【参考】:MDN JSON の取得
JSONファイルの削除方法
JSON形式のファイルの削除はOSのファイル削除の操作で削除できます。プログラム言語内でも作成したファイルをAPIで削除することができます。
JSONでデータ活用を効率的に行いましょう
JSONは簡単なデータ記述言語であり、テキスト形式のため作成・修正等のメンテナンスが簡単に行えます。JSONファイルにデータを格納することでネットワーク環境においてもデータ交換が可能になります。異なるアプリケーション同士でもデータの受け渡しが簡単に行うことができます。
手順を決めることで簡単にメモ感覚でデータを集計し、後で統合利用することもおすすめの利用方法です。
編集部オススメコンテンツ
アンドエンジニアへの取材依頼、情報提供などはこちらから