JSONの概要

前書き

  • JSON - JavaScript Object Notation *の略語-データを共有するための形式です。 その名前が示すように、JSONはJavaScriptプログラミング言語から派生していますが、Python、Ruby、PHP、Javaなどの多くの言語で使用できます。 JSONは通常、「Jason」という名前のように発音されます。

JSONは、単独の場合は `+ .json `拡張を使用します。 別のファイル形式(「 .html +」など)で定義されている場合、引用符内にJSON文字列として表示されるか、変数に割り当てられたオブジェクトになります。 この形式は、Webサーバーとクライアントまたはブラウザー間で簡単に送信できます。

非常に読みやすく軽量なJSONは、XMLに代わる優れた代替手段を提供し、必要な書式設定がはるかに少なくなります。 この情報ガイドでは、JSONファイルで使用できるデータ、およびこの形式の一般的な構造と構文について理解することができます。

構文と構造

JSONオブジェクトは、通常は中括弧で表示されるキーと値のデータ形式です。 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 * keys *はコロンの左側にあります。 これらは、 " key "+`のように二重引用符で囲む必要があり、任意の有効な文字列にすることができます。 各オブジェクト内で、キーは一意である必要があります。 これらのキー文字列には、「+ "first name" + `」のように空白が含まれますが、プログラミング時にアクセスしにくくなる可能性があるため、「+" first_name "」のようにアンダースコアを使用することをお勧めします。

JSON *値*はコロンの右側にあります。 詳細レベルでは、これらは6つの単純なデータ型のいずれかである必要があります。

  • ひも

  • 数字

  • オブジェクト

  • 配列

  • ブール値(trueまたはfalse)

  • null

より広いレベルでは、値はJSONオブジェクトまたは配列の複雑なデータ型で構成することもできます。これはhttps://www.digitalocean.com/community/tutorials/an-introduction-to-json#workingで説明されています-with-complex-types-in-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での複合型の使用

JSONは、ネストされた配列に加えて、ネストされたオブジェクトをJSON形式で保存できます。 これらのオブジェクトと配列はキーに割り当てられた値として渡され、通常はキーと値のペアで構成されます。

ネストされたオブジェクト

以下の + users.json +`ファイルでは、4人のユーザー( `+" sammy "+" jesse "" drew "" jamie ")のそれぞれに対して各ユーザーの値として渡されるネストされたJSONオブジェクトがあり、各ユーザーに関連する `" username "`および `" location "`のネストされたキーがあります。 最初のネストされたJSONオブジェクトは、以下で強調表示されています。

users.json

{
 "sammy" :




 ,
 "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は、その配列型の両端に角括弧 `+ [] +`を使用します。 配列は順序付けられたコレクションであり、異なるデータ型の値を含むことができます。

1人のユーザーに関連付けられたさまざまなWebサイトやソーシャルメディアプロファイルがある場合など、簡単にグループ化できる大量のデータを扱う場合は、配列を使用できます。

最初のネストされた配列が強調表示されると、Sammyのユーザープロファイルは次のようになります。

user_profile.json

{
 "first_name" : "Sammy",
 "last_name" : "Shark",
 "location" : "Ocean",
 "websites" :








 ,
 "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 "`キーはそれぞれ配列を使用して、Sammyの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が必要とする一方で終了タグを必要としないことがわかります。 さらに、このJSONの例のように、XMLは配列を使用していません(角括弧を使用して確認できます)。

HTMLに精通している場合、XMLのタグの使用法は非常によく似ていることに気付くでしょう。 JSONはXMLよりも簡潔で冗長ではなく、AJAXアプリケーションを含む多くの状況ですぐに使用できますが、使用するデータ構造を決定する前に、作業しているプロジェクトのタイプを理解する必要があります。

リソース

JSONはJavaScriptで使用する自然な形式であり、多くの一般的なプログラミング言語で使用できる多くの実装があります。 「http://www.json.org/[Introducing JSON]」サイトで完全な言語サポートを確認できます。また、https://jquery.com/ [jQuery library]も互換性と解析を処理できます。

ほとんどの場合、純粋なJSONを記述するのではなく、データソースからプルするか、他のデータファイルをJSONに変換します。 オープンソースツールhttps://shancarter.github.io/mr-data-converter/[Mr。 データコンバータ]。 Creative Commonsライセンスのhttp://www.utilities-online.info/xmltojson/[utilities-online.infoサイト]を使用して、XMLをJSONに、またはその逆に変換できます。 自動化ツールを使用する場合、結果を確認し、必要に応じて冗長性を削除する必要があります。

他のデータ型をJSONに変換する場合、または独自のデータ型を作成する場合、http://jsonlint.com/ [JSONLint]でJSONを検証し、https://jsfiddle.net/を使用してWeb開発コンテキストでJSONをテストできます。 [JSFiddle]。

結論

JSONは、データを簡単に共有、保存、操作できる軽量な形式です。 形式として、JSONはhttps://www.digitalocean.com/community/tutorials/how-to-create-a-twitter-app[Twitter API]を含むAPIのサポートが強化されています。

おそらく独自の `+ .json +`ファイルを作成するのではなく、他のソースからそれらを取得するため、JSONの構造について考えるのではなく、プログラムでJSONを最適に使用する方法について考えることが重要です。

前の投稿:実動用の構築:Webアプリケーション—概要
次の投稿:リモートサーバーにJupyterノートブックをインストール、実行、接続する方法