導入
JSON(JavaScript Object Notationの略)は、データ共有のためのフォーマットです。名前の通り、JSONはJavaScriptプログラミング言語から派生したものですが、Python、Ruby、PHP、Javaなど多くの言語で利用できます。JSONは「ジェイソン」のように発音されることが多いです。.
JSONは読みやすく軽量で、XMLの優れた代替手段となり、フォーマット設定もはるかに少なくて済みます。この有益なガイドでは、JSONファイルで使用できるデータと、そのフォーマットの一般的な構造と構文について説明します。.
構文と構造を理解する
JSONは単独で使用される場合は拡張子.jsonを使用します。他のファイル形式(.htmlなど)で定義される場合は、引用符で囲まれたJSON文字列として、または変数に割り当てられたオブジェクトとして使用できます。この形式は、Webサーバーとクライアントまたはブラウザ間で送信されます。.
JSONオブジェクトは、キーと値を持つデータ形式で、通常は中括弧で囲まれています。JSONを扱う際には、.jsonファイル内のJSONオブジェクトに遭遇する可能性が高いですが、プログラムのコンテキスト内ではJSONオブジェクトまたは文字列として存在することもあります。.
以下は JSON オブジェクトの例です。
{
"first_name" : "Sammy",
"last_name" : "Shark",
"location" : "Ocean",
"online" : true,
"followers" : 987
}これは短い例であり、JSONは長行になることもありますが、一般的には{}で表される2つの括弧(または中括弧)の両側にキーと値のペアが続くという形式になっていることがわかります。キーと値のペアは、その間のスペースを埋めます。JSONで使用されるデータのほとんどは、JSONオブジェクトにカプセル化されています。.
キーと値のペアはコロンで区切られます(例:「キー」:「値」)。各キーと値のペアはカンマで区切られるため、JSONの中央部分は「キー」:「値」、「キー」:「値」、「キー」:「値」のように記述されます。上記の例では、最初のキーと値のペアは「first_name」:「Sammy」です。.
JSONのキーはコロンの左側にあります。キーは「key」のように二重引用符で囲む必要があり、有効な文字列であれば何でも構いません。各オブジェクト内でキーは一意である必要があります。これらのキー文字列には「first_name」のようにスペースを含めることができますが、プログラミング時にアクセスしにくくなる可能性があるため、「first_name」のようにアンダースコアを使用することをお勧めします。.
JSON値はコロンの右側にあります。細かいレベルでは、以下の6つのデータ型のいずれかである必要があります。
- 文字列
- 数字
- オブジェクト
- 配列
- ブール値(真または偽)
- ヌル
より広いレベルでは、複雑な JSON オブジェクトまたは配列データ型から値を構築することもできます。これについては次のセクションで説明します。.
JSON に値として渡される各データ型は独自の構文を維持しており、文字列は引用符で囲まれますが、数値は囲まれません。.
.json ファイルでは通常、複数行にわたるテンプレートが提供されますが、次の例のように、JSON をすべて 1 行に記述することもできます。
{ "first_name" : "Sammy", "last_name": "Shark", "online" : true, }これは、別のファイル タイプや JSON 文字列に遭遇した場合によく発生します。.
JSONを複数行に記述すると、特に大規模なデータセットを扱う場合、可読性が大幅に向上します。JSONは要素間の空白を無視するため、キーと値のペアをコロンで区切ることで、データをさらに人間にとって読みやすくすることができます。
{
"first_name" : "Sammy",
"last_name" : "Shark",
"online" : true
}JSONオブジェクトはJavaScriptオブジェクトと似ていますが、形式が異なるため、JavaScriptオブジェクト内の関数は使用できますが、JSONの値として使用することはできません。JSONの最も重要な特徴は、すべての対応言語で扱える形式で、プログラミング言語間で簡単に転送できることです。一方、JavaScriptオブジェクトはJavaScriptプログラミング言語を介してのみ直接操作できます。.
JSONは、ネストされたオブジェクトと配列で構成される階層構造によって、より複雑な構造にすることができます。これらの複雑な構造については、次のステップで詳しく説明します。.
JSON での複合型の操作
JSONは、ネストされた配列に加えて、ネストされたオブジェクトをJSON形式で保存できます。これらのオブジェクトと配列は、キーに割り当てられた値として送信され、キーと値のペアで構成される場合もあります。.
ネストされたオブジェクト
以下のusers.jsonファイルでは、4人のユーザー(「sammy」、「jesse」、「drew」、「jamie」)それぞれに対して、ネストされたJSONオブジェクトが値として渡されます。各JSONオブジェクトには、各ユーザーに対応するネストされた「username」キーと「location」キーがそれぞれ含まれています。以下のコードブロック内の各ユーザーエントリは、ネストされたJSONオブジェクトの例です。
{
"sammy" : {
"username" : "SammyShark",
"location" : "Indian Ocean",
"online" : true,
"followers" : 987
},
"jesse" : {
"username" : "JesseOctopus",
"location" : "Pacific Ocean",
"online" : false,
"followers" : 432
},
"drew" : {
"username" : "DrewSquid",
"location" : "Atlantic Ocean",
"online" : false,
"followers" : 321
},
"jamie" : {
"username" : "JamieMantisShrimp",
"location" : "Pacific Ocean",
"online" : true,
"followers" : 654
}
}この例では、中括弧を使用して、4人のユーザーそれぞれのユーザー名と位置情報を含むネストされたJSONオブジェクトを形成しています。他の値と同様に、オブジェクトを使用する場合は、要素をカンマで区切ります。.
ネストされた配列
JavaScript配列を使用してJSON内のデータをネストすることもできます。配列は値として渡されます。JavaScriptでは、配列型の両端に角括弧[ ]を使用します。配列は順序付けられたコレクションであり、異なるデータ型の値を含めることができます。.
たとえば、単一のユーザーにさまざまな Web サイトやソーシャル メディア プロファイルが関連付けられている場合など、グループ化できる大量のデータを処理する場合に配列を使用することがあります。.
最初のネストされた配列では、「Sammy」のユーザー プロファイルは次のようになります。
{
"first_name" : "Sammy",
"last_name" : "Shark",
"location" : "Ocean",
"websites" : [
{
"description" : "work",
"URL" : "https://www.digitalocean.com/"
},
{
"desciption" : "tutorials",
"URL" : "https://www.digitalocean.com/community/tutorials"
}
],
"social_media" : [
{
"description" : "twitter",
"link" : "https://twitter.com/digitalocean"
},
{
"description" : "facebook",
"link" : "https://www.facebook.com/DigitalOceanCloudHosting"
},
{
"description" : "github",
"link" : "https://github.com/digitalocean"
}
]
}「websites」キーと「social_media」キーはそれぞれ配列を使用しており、サミーの2つのウェブサイトリンクと3つのソーシャルメディアプロフィールリンクに関する情報を保持しています。角括弧が使用されていることから、これらが配列であることがわかります。.
JSON 形式でネストを使用すると、より複雑で階層化されたデータを処理できます。.
JSONとXMLの比較
XML(拡張マークアップ言語)は、人間と機械の両方が読み取れるアクセス可能なデータを保存する方法です。XML形式は、多くのプログラミング言語で使用できます。.
XMLは多くの点でJSONに似ていますが、必要なテキスト量が多く、読み書きに時間がかかり、データも長くなります。また、XMLはXMLパーサーで解析する必要がありますが、JSONは標準関数で解析できます。また、JSONとは異なり、XMLでは配列を使用できません。.
XML 形式の例を次に示します。
<users>
<user>
<username>SammyShark</username> <location>Indian Ocean</location>
</user>
<user>
<username>JesseOctopus</username> <location>Pacific Ocean</location>
</user>
<user>
<username>DrewSquir</username> <location>Atlantic Ocean</location>
</user>
<user>
<username>JamieMantisShrimp</username> <location>Pacific Ocean</location>
</user>
</users>ここで、JSON で表現された同じデータを比較します。
{"users": [
{"username" : "SammyShark", "location" : "Indian Ocean"},
{"username" : "JesseOctopus", "location" : "Pacific Ocean"},
{"username" : "DrewSquid", "location" : "Atlantic Ocean"},
{"username" : "JamieMantisShrimp", "location" : "Pacific Ocean"}
] }JSONはXMLよりもはるかにコンパクトで、閉じタグを必要としません。さらに、XMLではこのJSONの例のような配列は使用されません(括弧の使用からそれが分かります)。.
HTMLに馴染みのある方なら、XMLのタグの使い方がHTMLと非常に似ていることに気付くでしょう。JSONはXMLよりも簡潔で冗長であり、AJAXアプリケーションを含む多くの状況でより高速に使用できますが、どのデータ構造を使用するかを決める前に、まず作業しているプロジェクトの種類を把握しておく必要があります。.
結果
JSONは、データを共有、保存、操作できる軽量なフォーマットです。Twitter APIをはじめとするAPIでのサポートが拡大しています。また、JavaScriptでも自然に使用できるフォーマットであり、様々な主要プログラミング言語で使用できる実装が多数あります。言語サポートの詳細については、「JSONの紹介」サイトをご覧ください。.
おそらく独自の.jsonファイルを作成するのではなく、他のソースから取得することになるため、JSONの構造について考えるよりも、アプリケーションでJSONを最大限に活用する方法を考えることが重要です。例えば、オープンソースツールのMr. Data Converterを使用すると、スプレッドシートアプリケーションで見つかるCSVやタブ区切りのデータをJSONに変換できます。また、クリエイティブ・コモンズライセンスのサイトUtilities-online.infoを使用すれば、XMLとJSONを相互に変換することもできます。.
最後に、他のデータ型を JSON に変換する場合や独自の型を作成する場合は、JSONLint を使用して JSON を検証し、JSFiddle を使用して Web 開発のコンテキストで JSON をテストできます。.









