JSONフォーマットとは?具体的な書き方についても徹底解説!!

皆さんは、JSONを知っていますか?

JSONとは、データを読み書きするときに便利なデータフォーマットの1つです。ただ、初めて使う場合は、書き方になれるのが大変だったりもします。

そこで今回は、

  • JSONの基礎的な書き方
  • JSONを入れ子で書く方法
  • といった基礎的なことから、

  • JSONでエスケープ文字を書く方法
  • JSONフォーマットを使うときのメリット・デメリット
  • おすすめのJSONベースフォーマット
  • といった応用的な方法まで、徹底的に解説します!

    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を使いこなすためにおすすめなViewer・Editor厳選6選!!
    更新日 : 2019年5月4日

    まとめ

    今回は、JSONフォーマットの書き方・メリット・デメリットについて解説しました。

    JSONはWEB開発をするときは必須なデータ形式なので、使い方を覚えておくのがおすすめです!JSON用の便利なエディタを使いつつ、ぜひ実際に書いてみてくださいね!

    LINEで送る
    Pocket

    「プログラミング、右も左もわからない…」という方にオススメ

    当プログラミングスクール「侍エンジニア塾」では、これまで6000人以上のエンジニアを輩出してきました。

    その経験を通してプログラミング学習に成功する人は、「目的目標が明確でそれに合わせた学習プランがあること」「常に相談できる人がそばにいること」「自己解決能力が身につくこと」この3つが根付いている傾向を発見しました。

    侍エンジニア塾は上記3つの成功ポイントを満たすようなサービス設計に磨きをかけております。

    cta_under_bnr

    「自分のスタイルや目的に合わせて学習を進めたいな」とお考えの方は、ぜひチェックしてみてください。

    書いた人

    Sanshiro Wakizaka

    Sanshiro Wakizaka

    新卒入社したメーカー系のIT企業で、システムエンジニアとして約5年勤務。
    Webアプリ、業務アプリ開発において、要件定義、設計、インフラ、製造、テスト、運用保守など、様々な経験あり。
    また、侍ブログ編集部として、これまでに200記事以上の記事を執筆。
    現在はフリーランスエンジニア兼テックライターとして活動中。