[解決済み] JSONとJavaScriptオブジェクトの違いは何ですか?[重複あり]
質問
JSONとJavaScriptのオブジェクトは初めてです。
- どなたか、JSONとJavaScriptオブジェクトの違いを説明していただけませんか?
- それらの用途は何ですか?
- どちらか一方が優れているのでしょうか? それとも状況によるのでしょうか?
- どのような状況で、どちらを使えばいいのでしょうか?
- そもそも、なぜJSONが作られたのでしょうか?その主な目的は何だったのでしょうか?
- JavaScriptオブジェクトではなくJSONを使うべき場合、またその逆の場合の例を誰か教えてください。
どのように解決するのですか?
まず、JSONが何であるかを知っておく必要があります。
- それは 言語に依存しない データ交換フォーマットです。
JSONの構文は、JavaScript Object Literal記法にヒントを得ていますが、両者には違いがあります。
例えば、JSONではすべての キー は引用されなければなりませんが、オブジェクトリテラルではその必要はありません。
// JSON:
{ "foo": "bar" }
// Object literal:
var o = { foo: "bar" };
引用符はJSONでは必須です。なぜなら、JavaScript(正確にはECMAScript第3版)では 予約語 をプロパティ名として使用することは許可されていません。
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
または (悪名高い) 8 進数表示が使えます。
010
. JSONでは、10進数のみ使用できます。
// Invalid JSON:
{ "foo": 0xFF }
8進数のリテラルを誤って許可してしまうバグのある実装 (Firefox 3.5+, IE8+, json2.js) が存在します。
JSON.parse('01')
は
SyntaxError
.
関連
-
[解決済み] 正しいJSONコンテンツタイプは何ですか?
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] let "と "var "の使い分けは?
-
[解決済み] JavaScriptでオブジェクトをディープクローンする最も効率的な方法は何ですか?
-
[解決済み] JavaScriptのオブジェクトが空であることをテストするにはどうすればよいですか?
-
[解決済み] とは何ですか! (not not)演算子とは何ですか?
-
[解決済み] callとapplyの違いは何ですか?
-
[解決済み] JavaScriptでJSONをきれいに印刷する
-
[解決済み】JavaScriptのオブジェクトの長さ
-
[解決済み] Fetch: ステータスがOKでない場合、プロミスを拒否し、エラーをキャッチするか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】JSONとObject Literal Notationの違いは何ですか?
-
[解決済み] JavaScriptで次の要素/前の要素を取得しますか?
-
[解決済み] Chart.jsを使ってドーナツチャートの中にテキストを追加するには?
-
[解決済み] JavaScriptで:hoverのCSSプロパティを変更する
-
[解決済み] サブドメインにまたがってlocalStorageを使用する
-
[解決済み] コールバック地獄とは何か、RXはそれをどのように、そしてなぜ解決するのか?
-
[解決済み] AngularJS - ngRepeatフィルタリングされた結果の参照を取得する方法
-
[解決済み] BlobからArrayBufferへ移行する方法
-
[解決済み] Chromeのwebkitインスペクタで「Unsafe JavaScript attempt to access frame with URL...」というエラーが継続的に発生する。
-
[解決済み] javascriptのキャンバスで画像をリサイズする (スムーズ)