質問

この質問にはすでに答えがあります:

私はJSONとJavaScriptオブジェクトに初めてです。

  • JSONとJavaScriptオブジェクトの違いを誰かが説明できますか?
  • 彼らの用途は何ですか?
  • 一方はもう一方よりも優れていますか?それとも状況に依存しますか?
  • いつ使用するか、どのような状況ですか?
  • なぜJSONがそもそも作成されたのですか?その主な目的は何でしたか?
  • 誰かがJavaScriptオブジェクトではなくJSONを使用する必要がある場合の例を挙げてもらえますか?
役に立ちましたか?

解決

まず、JSONが何であるかを知っておく必要があります。

  • そうです 言語不可知論者 データインターチェンジ形式。

JSONの構文は、JavaScriptオブジェクトのリテラル表記に触発されましたが、それらの間には違いがあります。

たとえば、JSON Allで キー 引用する必要がありますが、オブジェクトリテラルではこれは必要ありません。

// JSON:
{ "foo": "bar" }

// Object literal:
var o = { foo: "bar" };

JavaScriptでは(ECMAScript3rd。Editionで正確に)、の使用は、JSONではJSONでは必須です。 予約された言葉 プロパティ名が許可されているため、たとえば:

var o = { if: "foo" }; // SyntaxError in ES3

一方、文字列をプロパティ名として使用する(プロパティ名を引用)は問題ありません。

var o = { "if": "foo" }; 

だから 「互換性」 (そして簡単に評価するのでしょうか?)引用は必須です。

JSONのデータ型も次の値に制限されています。

  • string
  • number
  • object
  • array
  • 文字通り:
    • true
    • false
    • null

の文法 Strings 変更。彼ら した方が良い によって区切られます 二重引用符, 、JavaScriptでは、単一の引用符または二重引用符を同じ意味で使用できます。

// Invalid JSON:
{ "foo": 'bar' }

受け入れられたjson文法 Numbers また、JavaScriptでは、16進数リテラルを使用できます。たとえば 0xFF, 、または(悪名高い)octalリテラル 010. 。 JSONでは、小数リテラルのみを使用できます。

// Invalid JSON:
{ "foo": 0xFF }

いくつかのバギーの実装(Firefox 3.5+、IE8+、json2.js)があり、オクタル文字が誤って許可されています。 JSON.parse('01') aを生成する必要があります SyntaxError.

他のヒント

JSONはオブジェクトの文字列表現です。相互運用可能なシリアル化形式です。 JavaScriptだけに結び付けられていません。たとえば、.NET用のJSONシリアライザーがあり、.NETオブジェクトをシリアル化/脱また重ねることができます。

したがって、これは単なるフォーマットであり、オブジェクトから文字列とバックに変換できます。これは、ワイヤー上に転送する場合に便利です。

JavaScriptオブジェクトの表現に非常に近いです。 eval() JSON文字列には、対応するオブジェクトが取得されます。

JSONはデータインターチェンジ形式であり、たまたまYAMLまたはJavaScriptコードのサブセットのように見え、オブジェクトを実行して戻すことができます。 JavaScriptオブジェクトは、JavaScriptの単なるオブジェクトです。

JSONがデータインターチェンジ形式である場合、構造化されたデータをテキスト形式で交換できます。これまでにJavaScriptからかなり切り離されています。 JavaScriptオブジェクトを使用すると、JavaScriptプログラムの実行中に構造化されたデータを作成および操作できます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top