JavaScript Object Notation (JSONの略で、名前の「ジェイソン」のように発音されます)は、データ共有フォーマットの一種です。その名前が示すように、JSONはJavaScriptに由来していますが、その利用を許可している唯一のコード所有者ではありません。実際、以下を含む他の多くのプログラミング言語でも利用可能です。Ruby, PHP, Python、およびJava.
単独で存在する場合、JSONファイルは.json拡張子を使用しますが、Webサーバーとクライアント(またはブラウザ)の間で簡単に送信できるフォーマットであるため、.htmlフォーマットとして定義することもできます。この場合、変数に代入されたオブジェクトであるか、引用符内のJSON文字列として表示されます。
JSONは、可読性が高く、最小限のフォーマットしか必要としないため、XMLの優れた代替手段です。このチュートリアルでは、JSONファイルに保存できるデータ、およびこのフォーマットの一般的な構文と構造について説明します。
構造 & 構文
JSONオブジェクトは、波括弧(中括弧)を使用してキーと値のペアを表すデータフォーマットです。JSONを扱う際、最もよく目にするのは.jsonファイルにレンダリングされた状態ですが、プログラムのコンテキスト内では、文字列またはJSONオブジェクトとして存在することもあります。
以下は、JSONオブジェクトの例です。

これはかなり短い例であり、実際のJSONオブジェクトはもっと長くなる可能性がありますが、両端に2つの波括弧(または中括弧)があり、その間のスペースをキーと値のペアが埋めるという、このフォーマットの一般的な構成を正確に示しています。JSON内のデータの大部分は、JSON項目にカプセル化されています。
キーと値のペアを区切るコロン(“key” : “value”)があります。これらのペアはそれぞれ、カンマによってリストの異なるメンバーとして区切られます。その結果、JSONフォーマットの中間部分は次のようになります:“key” : “value”, “key” : “value”, “key” : “value”。上記の例では、たとえば"name" : "Akshay"が最初のキーと値のペアになります。
各オブジェクトのキーは一意である必要があり、任意の有効な文字列としてレンダリングでき、ダブルクォーテーション(“key”)で囲まれ、常にコロンの左側に配置されます。キー文字列内のスペースは許可されますが(“first name”など)、プログラミング側からアクセスする観点からは、より困難なアプローチとなります。そのため、一般的に採用されているプログラミングの慣行は、キー内のスペースをアンダースコア(“first_name”).
)に置き換えることです。JSONの値はコロンの右側に配置されます。最も基本的な粒度では、これらは以下の6つの特定のデータ型のいずれかである必要があります:
- 数値
- オブジェクト
- 配列
- 文字列
- 真偽値(Boolean)
- Null
次のセクションでは、JSONオブジェクト配列のより複雑なデータ型について説明します。JSONに渡される各値はその構文を保持します。つまり、文字列は引き続き引用符で囲まれて表示されますが、数値は囲まれません。
JSONフォーマットは、慣例として通常は複数行の形式で記述されます。ただし、単一の行にフォーマットすることもできます:

このタイプのフォーマットは、JSON文字列を扱う場合や、別のファイルタイプ内でよく見られます。巨大なデータセットを扱う場合、JSONにはスペースによる区切りの支援がないため、コロンとキーと値のペアを個別の行に書き出すことで、人間にとってリストが読みやすくなります:

JSONオブジェクトはJavaScriptに似ていますが、これらは異なるフォーマットであることに注意することが重要です。JavaScriptでは関数の使用が許可されていますが、JSONでは許可されていません。JSONを非常に価値のあるものにしているのは、その言語を越えた互換性であり、すべてのプログラミングプラットフォームがそれを解釈できるようになっています。
これまでは最も単純な形式のJSONフォーマットのみを見てきましたが、ネストされたオブジェクトや配列が含まれると、階層的かつより複雑に進化する可能性があります。次のセクションでは、より高度なJSONについて見ていきます。
複雑なJSON型の利用
ネストされた配列に加えて、JSONはネストされたオブジェクトも保存できます。これらのオブジェクトと配列はキーの値として転送され、キーと関連付けられてキーと値のペアを形成します。
- ネストされたオブジェクトの形成
以下のusers.json ファイル画像では、4人のユーザーそれぞれに対してネストされたJSONオブジェクトが中継されています(“akshay”, “sam”, “Andrew”, “James”)。各ユーザーは独自のネストされたキー(“location” および “username”):

ハイライトされた部分は、最初のネストされたオブジェクトの例を表しています。上記の例では、波括弧を使用して、4人のユーザーそれぞれに対応するユーザー名と位置情報の詳細を持つネストされたJSONオブジェクトを作成しています。オブジェクトを使用する場合、特定のユーザー属性に基づいて項目を区別するためにカンマが使用されます。
- ネストされた配列の形成
値として渡されるJavascript配列を利用して、JSON形式内にデータをネストすることもできます。これは、配列型の末尾に[ ](角括弧)を使用することで行われ、配列は一意のデータ型が含まれる構造化されたリストになります:

上記の例のハイライトされたセクションでは、角括弧が存在するため、Akshays’sの2つのソーシャルメディアプロファイルサイトと2つのウェブサイトリンクが、それぞれネストされた情報の配列内で使用されています。JSONでこのようにネストを取り入れることで、階層的で複雑なデータコンテンツを扱う際により高い汎用性を実現できます。
- XMLとの比較
Extensible Markup Language (XML)は、機械と人間の両方がアクセスできるデータを保存する方法を提供します。JSONと同様に、XMLは多くのプログラミング言語で使用できます。JSONとは異なり、XMLは大幅に多くのテキストを必要とするため、作成がより複雑で時間がかかります。標準的な関数でJSONを解析できますが、XMLにはXML専用のパーサーが必要です。さらに、XMLでは配列を使用できません。同じデータをXML形式とJSON形式で比較してみましょう:

XMLは大幅に多くのテキストを必要とし、より多くのスペースを占有します。また、終了タグも必要ですが、JSONははるかにコンパクトでシンプルに配置されています。HTMLに慣れている方なら、XMLによるタグの使用方法の類似性に気づくでしょう。
どちらの形式を使用するかを決定する前に、プロジェクトの範囲とニーズを評価することが常に役立ちます。JSONは冗長性が低く、よりスリムで、AJAXアプリやその他の状況で迅速に使用できます。プロジェクトのタイプによって、使用するのに最適なデータ構造が明らかになります。
JSONについてさらに学ぶ
JSONは、複数のプログラミング言語にわたって実装できる、汎用性が高く自然な形式です。サポートされている言語の完全なリストは、「JSONの紹介」ページで確認できます。さらに、解析と互換性に関する情報は、「iQueryライブラリ」にあります。
結局のところ、プレーンなJSONを自分で書く機会はそれほど多くないでしょう。代わりに、データソースから取得したり、他のデータファイルをJSONに変換したりすることになります。オープンソースツールのMr. Data Converterを使用すると、スプレッドシートプログラムにあるCSVまたはタブ区切りのデータをJSONに変換できます。クリエイティブ・コモンズ・ライセンスのutilities-online.infoプラットフォームを使用すると、XMLからJSONへ、またその逆の変換を行うことができます。自動化ソフトウェアを使用する場合は、冗長性を排除するためにレポートを再確認してください。
また、JSONLint を使用してJSONを検証したり、他の形式をJSON形式に変換する際にWeb開発の文脈で評価するために JFiddle を使用したりすることもできます。
結論
高まるAPIのサポート(Twitter APIを含む)を得ているJSONは、データの編集、保存、共有のシンプルさを促進する軽量なデータ形式です。独自の.jsonファイルを作成するのではなく、他のアウトレットから受信することになるため、その構造よりもプログラムでJSONをどのように使用するかを考えることの方が重要です。
以下は、JavaScriptでのプログラミングに役立つ当ブログの追加リソースです:
- 以下について学びましょう:Javascriptにおけるプロトタイプと継承の仕組み
- 詳細を見る:HTMLにJavaScriptを追加する方法.
- 独自のWebアプリケーションを構築している場合は、最適なサーバーセットアップの選択方法に関するガイドをご覧ください.
ハッピーコンピューティング!
コメント
コメントはまだありません。最初のコメントを投稿しましょう。