皆さんは、JSONを知っていますか?
JSONとは、データを読み書きするときに便利なデータフォーマットの1つです。ただ、初めて使う場合は、書き方になれるのが大変だったりもします。
そこで今回は、
といった基礎的なことから、
といった応用的な方法まで、徹底的に解説します!
JSONフォーマットの書き方
はじめに、JSONフォーマットの書き方について解説します。
シンプルにJSONデータを作る方法
まず、「シンプルにJSONデータを作る方法」についてです。
「名前:値」のように設定することで、データを作ることができます。
書き方:
{名前1:値1,名前2:値2,名前3:値3}
具体的なサンプルを用意しました。
テキスト形式で表示したJSONデータ:
{ "id" : 1, "name" : "samurai1", "like-lang" : "php" }
「JSON Editor Online」でノード形式表示したJSONデータ:
これがJSONのデータを作る基礎になります。
入れ子でJSONデータを作る方法
つぎは、「入れ子でJSONデータを作る方法」についてです。
次のように書くことで、入れ子のデータを作ることができます。
書き方:
グループの名前 : [ {名前1:値1,名前2:値2,名前3:値3}, {名前1:値1,名前2:値2,名前3:値3}, {名前1:値1,名前2:値2,名前3:値3} ]
具体的なサンプルを用意しました。
テキスト形式で表示したJSONデータ:
"UserInfo" : [ { "id" : 1, "name" : "samurai1", "like-lang" : "php" }, { "id" : 2, "name" : "samurai2", "like-lang" : "javascript"}, { "id" : 3, "name" : "samurai3", "like-lang" : "ruby" } ]
ノード形式で表示したJSONデータ:
JSONでデータを作るときは、この方法を使うケースが多いので、覚えておくのがおすすめです!
値に入れる種類とは
つぎは、「値に入れる種類」についてです。
{名前1:値1,名前2:値2,名前3:値3}の「値」に入れる種類です。次のように、3つの種類の値を入れることができます。
No | 種類 | 使い方 | 値サンプル |
---|---|---|---|
1 | 文字列 | ダブルコーテーションで文字を囲む | "文字1" |
2 | 数値 | 整数、小数ともにそのまま入力 | 123 3.14 |
3 | 真偽値 | true・falseのどちらかを入力 ※必ず小文字を使う | true |
3つなので、覚えやすいですね。
エスケープ文字を入れる方法
つぎは、「エスケープ文字を入れる方法」についてです。
エスケープ文字についてわからない方もいると思うので、簡単に解説します。エスケープ文字とは、「次の文字の意味を変えることができる文字」のことです。
たとえば、JSONで文字列を入力するときは、ダブルコーテーション(“)で囲って文字を入力しますよね。では、ダブルコーテーション(“)を含めた文字を入力したいときはどうすれば良いでしょうか?
{ "self_intro": "ぼくの得意な言語は"VBA"です。" }
のように入力しても、うまくいきません。このようなケースで、エスケープ文字を使います。
ダブルコーテーション(“)の前にバックスラッシュ()を入れて「”」と書くことで、ダブルコーテーション(“)を文字として認識することができます。
先ほどの例を書き直すと、次のようになります。
{ "self_intro": "ぼくの得意な言語は"VBA"です。" }
ダブルコーテーション以外にも、そのまま入力できない文字があるので、エスケープ文字一覧を表形式でまとめました。
No | 入力する値 | 使い方 | 入力イメージ | 補足 |
---|---|---|---|---|
1 | ダブルコーテーション(") | 先頭に「\」 + ダブルコーテーション(")を入 | \" | |
2 | バックスラッシュ(\) | 先頭に「\」 + バックスラッシュ(\)を入力 | \\ | |
3 | スラッシュ(/) | 先頭に「\」 + スラッシュ(/)を入力 | \/ | |
4 | バックスペース | 「\b」を入力 | \b | |
5 | 改ページ | 「\f」を入力 | \f | |
6 | 改行コード:CR | 「\n」を入力 | \n | カーソルを左端の位置に戻す |
7 | 改行コード:LF | 「\r」を入力 | \r | カーソルを新しい行に移動 |
8 | タブ文字 | 「\t」を入力 | \t |
いきなりすべて覚える必要はありません。
「JSONでデータを作ってみて、困ったときにエスケープ文字を使う」といったレベルで、まずは覚えておくのがおすすめです!
JSONフォーマットを使うときのメリット・デメリット
次に、「JSONフォーマットを使うときのメリット・デメリット」について解説します。
JSONフォーマットのメリット
まず、「JSONフォーマットのメリット」について解説します。JSONフォーマットのメリットは、データの持たせ方の自由度にあります。
わかりやすく解説するために、CSV形式のファイルと比較して解説します。
CSVファイルは、Excelのように行・列に分けてデータを保持することができます。
※わかりやすくするためにExcelで表示しています
JSONでデータを作った場合は次のようになります。
では、ここで電話番号追加する場合を考えてみましょう。電話番号は「自宅」「携帯」など複数の番号を入れるケースがありますよね。
CSVの場合は次のように、2列追加しないといけません。
一方、JSONでデータを持たせるときは次のように「tel」の要素の中に「home-phone」「mobile-phone」のように二つの要素を持たせることができます。
このように、柔軟にデータを持たせることができるのが最大のメリットです!
JSONフォーマットのデメリット
次に、「JSONフォーマットのデメリット」について解説します。
データを柔軟に持たせることができる反面、大規模データを処理するときは処理に時間がかかってしまいます。たとえばさきほどのJSONデータを例にしてみてみましょう。
「UserInfo」の中に3つのデータがあり、3つのデータの中でそれぞれ「id」「name」「like-lang」「tel」の4つに分かれており、「tel」はさらに「home-phone」「mobile-phone」の2つに分かれています。
入れ子のデータをそれぞれ読み込んでいくことになるため、処理が重くなってしまうわけですね。
ただ、JSONデータを高速で処理するための仕組みとして「Jackson」や「Json-simple」のように、JSONデータでも高速で処理する仕組みもあるので、高速化が最重要ならCSVファイル、柔軟なデータも持たせたいならJSONのように使い分けるのがおすすめです!
おすすめのJSONエディタ
最後に、JSONを書くときのおすすめエディタについて、ご紹介します。
データフォーマットをきれいにしつつ、テキスト形式・ノード形式で見れるエディタで書くのがおすすめです!
まとめ
今回は、JSONフォーマットの書き方・メリット・デメリットについて解説しました。
JSONはWEB開発をするときは必須なデータ形式なので、使い方を覚えておくのがおすすめです!JSON用の便利なエディタを使いつつ、ぜひ実際に書いてみてくださいね!