JSONの概要
序章
JSON — JavaScript Object Notation の略—は、データを共有するための形式です。 その名前が示すように、JSONはJavaScriptプログラミング言語から派生していますが、Python、Ruby、PHP、Javaなどの多くの言語で使用できます。 JSONは通常、「Jason」という名前のように発音されます。
JSONは、スタンドアロンの場合、.json拡張機能を使用します。 別のファイル形式(.htmlなど)で定義されている場合は、引用符の中にJSON文字列として表示することも、変数に割り当てられたオブジェクトにすることもできます。 この形式は、Webサーバーとクライアントまたはブラウザー間で簡単に送信できます。
非常に読みやすく軽量なJSONは、XMLの優れた代替手段を提供し、必要なフォーマットがはるかに少なくなります。 この情報ガイドでは、JSONファイルで使用できるデータ、およびこの形式の一般的な構造と構文について理解します。
構文と構造
JSONオブジェクトは、通常中括弧でレンダリングされるKey-Valueデータ形式です。 JSONを使用している場合、.jsonファイルにJSONオブジェクトが表示される可能性がありますが、プログラムのコンテキスト内にJSONオブジェクトまたは文字列として存在することもできます。
JSONオブジェクトは次のようになります。
{
"first_name" : "Sammy",
"last_name" : "Shark",
"location" : "Ocean",
"online" : true,
"followers" : 987
}
これは非常に短い例であり、JSONは数行の長さになる可能性がありますが、これは、フォーマットが通常、両端にこの{ }のような2つの中括弧(または中括弧)で設定されていることを示しています。キーと値のペアが間にスペースを埋めます。 JSONで使用されるほとんどのデータは、最終的にJSONオブジェクトにカプセル化されます。
"key" : "value"のように、キーと値のペアの間にコロンがあります。 各キーと値のペアはコンマで区切られているため、JSONの中央は"key" : "value", "key" : "value", "key": "value"のようになります。 上記の例では、最初のキーと値のペアは"first_name" : "Sammy"です。
JSONキーはコロンの左側にあります。 "key"のように、二重引用符で囲む必要があり、任意の有効な文字列にすることができます。 各オブジェクト内で、キーは一意である必要があります。 これらのキー文字列canには、"first name"のように空白を含めることができますが、プログラミング時にアクセスしにくくなる可能性があるため、"first_name"のようにアンダースコアを使用することをお勧めします。 ]。
JSON値はコロンの右側にあります。 詳細レベルでは、これらは6つの単純なデータ型のいずれかである必要があります。
- 文字列
- 数字
- オブジェクト
- 配列
- ブール値(trueまたはfalse)
- ヌル
より広いレベルでは、値はJSONオブジェクトまたは配列の複雑なデータ型で構成することもできます。これについては次のセクションで説明します。
JSONに値として渡される各データ型は独自の構文を維持するため、文字列は引用符で囲まれますが、数値は引用符で囲まれません。
.jsonファイルでは、通常、形式が複数行に拡張されていることがわかりますが、JSONはすべて1行で書き込むこともできます。
{ "first_name" : "Sammy", "last_name": "Shark", "online" : true, }
これは、別のファイルタイプ内で、またはJSON文字列に遭遇した場合により一般的です。
JSON形式を複数行に書き込むと、特に大きなデータセットを処理する場合に、JSON形式がはるかに読みやすくなることがよくあります。 JSONは要素間の空白を無視するため、データをさらに人間が読めるようにするために、コロンとキーと値のペアの間隔を空けることができます。
{
"first_name" : "Sammy",
"last_name" : "Shark",
"online" : true
}
見た目は似ていますが、JSONオブジェクトは JavaScriptオブジェクトと同じ形式ではないため、JavaScriptオブジェクト内で関数を使用することはできますが、 JSON。 JSONの最も重要な属性は、参加しているすべての言語が使用できる形式で、プログラミング言語間でJSONを簡単に転送できることです。 JavaScriptオブジェクトは、JavaScriptプログラミング言語を介してのみ直接操作できます。
これまで、JSON形式を最も単純な用語で見てきましたが、JSONは階層的で複雑になり、ネストされたオブジェクトと配列で構成される可能性があります。 次のセクションでは、より複雑なJSONについて説明します。
JSONでの複雑な型の操作
JSONは、ネストされた配列に加えて、ネストされたオブジェクトをJSON形式で格納できます。 これらのオブジェクトと配列は、キーに割り当てられた値として渡され、通常はキーと値のペアで構成されます。
ネストされたオブジェクト
以下のusers.jsonファイルでは、4人のユーザー("sammy"、"jesse"、"drew"、"jamie")のそれぞれに対してネストされています各ユーザーの値として渡されるJSONオブジェクトと、各ユーザーに関連する"username"および"location"の独自のネストされたキー。 最初にネストされたJSONオブジェクトが以下で強調表示されています。
users.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のユーザープロファイルは次のようになります。
user_profile.json
{
"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つのWebサイトリンクと3つのソーシャルメディアプロファイルリンクに属する情報をネストします。 角かっこを使用しているため、これらは配列であることがわかります。
JSON形式内でネストを使用すると、より複雑で階層的なデータを処理できます。
XMLとの比較
XML 、またはe X tensible M arkup L anguageは、人間とマシン。 XML形式は、多くのプログラミング言語で使用できます。
多くの点で、XMLはJSONと非常に似ていますが、必要なテキストがはるかに多いため、長さが長くなり、読み取りと書き込みに時間がかかります。 XMLはXMLパーサーで解析する必要がありますが、JSONは標準関数で解析できます。 また、JSONとは異なり、XMLは配列を使用できません。
XML形式の例を見てから、JSONでレンダリングされた同じデータを見ていきます。
users.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>
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のタグの使用法が非常に似ていることに気付くでしょう。 JSONはXMLよりもスリムで冗長性が低く、AJAXアプリケーションを含む多くの状況ですばやく使用できますが、使用するデータ構造を決定する前に、作業しているプロジェクトのタイプを理解する必要があります。
資力
JSONはJavaScriptで使用する自然な形式であり、多くの一般的なプログラミング言語で使用できる多くの実装があります。 「IntroducingJSON」サイトで完全な言語サポートを確認できます。また、jQueryライブラリでも互換性と解析を処理できます。
ほとんどの場合、純粋なJSONを作成することはありませんが、データソースから取得するか、他のデータファイルをJSONに変換します。 オープンソースツールを使用して、スプレッドシートプログラムにあるCSVまたはタブ区切りのデータをJSONに変換できます。 氏 データコンバーター 。 クリエイティブコモンズライセンスのutilities-online.infoサイトを使用して、XMLをJSONに、またはその逆に変換できます。 自動ツールを使用する場合は、結果を確認し、必要に応じて冗長性を削除する必要があります。
他のデータ型をJSONに変換する場合、または独自のデータ型を作成する場合は、 JSONLint を使用してJSONを検証し、JSFiddleを使用してWeb開発コンテキストでJSONをテストできます。
結論
JSONは、データの共有、保存、操作を簡単に行える軽量の形式です。 フォーマットとして、JSONは TwitterAPIを含むAPIでのサポートが増えています。
独自の.jsonファイルを作成するのではなく、他のソースからそれらを調達する可能性が高いため、JSONの構造について考えるのではなく、プログラムでJSONを最適に使用する方法について考えることが重要です。