ホームページ > 記事 > ウェブフロントエンド > JavaScriptを深く理解するシリーズ(9) 「JSONオブジェクト」なんてものはない! _JavaScript スキル
まえがき
この記事を書く目的は、開発者が文字列を JSON オブジェクトに変換する、JSON オブジェクトを文字列に変換するなどと言っているのをよく見かけるので、以前集めていた外国人の記事をまとめて翻訳してみました。ここはみんなで議論するため、間違いがあれば指摘してください。
テキスト
この記事のトピックは ECMAScript262-3 に基づいて書かれています。2011 年の新しい 262-5 仕様では、通常 JSON と呼ばれるものに関連する JSON オブジェクトが追加されました。同じことです。記事の最後のセクションでは、新しく追加された JSON オブジェクトについて説明します。
英語の原文: http://benalman.com/news/2010/03/theres-no- such-thing-as-a-json/
非常によくある誤解を解き明かしたいと思います, 多くの JavaScript 開発者は、JavaScript オブジェクト リテラル (JSON オブジェクト) の構文が JSON 仕様で説明されているものと同じであるため、誤って JavaScript オブジェクト リテラル (JSON オブジェクト) と呼んでいると思いますが、仕様には、JSON は単なるデータ交換言語であり、使用する場合にのみ JSON と呼ばれることも明記されています。それを文字列コンテキストに含めます。
シリアル化と逆シリアル化
2 つのプログラム (またはサーバー、言語など) が対話的に通信する必要がある場合、文字列は多くの言語で同様の方法で解析されるため、文字列を使用する傾向があります。複雑なデータ構造がよく使用され、さまざまな角括弧 {}、括弧 ()、角括弧 <> およびスペースで構成されます。この文字列は、必要に応じて標準化された単なる文字列です。
この目的のために、これらの複雑なデータ構造を文字列として記述するための標準ルールと構文を開発しました。 JSON は構文の 1 つにすぎません。オブジェクト、配列、文字列、数値、ブール値、および null を文字列コンテキストで記述し、それらをプログラム間で送信し、必要な形式に逆シリアル化できます。 YAML と XML (リクエスト パラメーターも) も一般的なデータ交換形式ですが、JavaScript 開発者と呼ばれる私たちは JSON を好みます。
リテラル
参考のために Mozilla Developer Center からいくつかの文を引用します:
これらは変数ではなく固定値であり、スクリプトを「文字通り」理解することができます。 (リテラル)
文字列リテラルは、二重引用符 (") または一重引用符 (') で囲まれた 0 個以上の文字で構成されます。 (文字列リテラル)
オブジェクト リテラルは、中括弧 ({}) で囲まれた 0 個以上の文字で構成されます。オブジェクト プロパティの名前と値のペア (オブジェクト リテラル)
いつ JSON になり、いつ JSON ではないのか?
JSON は、JavaScript のサブセットである独自の構文も持つように設計されています。 .
{ "prop": "val" } このような宣言は、使用されるコンテキストに応じて、JavaScript オブジェクト リテラルまたは JSON 文字列になります (単一または で囲まれています)。二重引用符で囲まれるか、テキスト ファイルから読み取られます)、オブジェクト リテラル コンテキストで使用される場合は、オブジェクト リテラル <.>