[解決済み】JavascriptのオブジェクトとJSONの比較
質問
JavascriptのオブジェクトとJSONの文字列の基本的な違いを明確に理解したいのですが。
例えば、次のようなJS変数を作るとしよう。
var testObject = {one: 1,"two":2,"three":3};
Q1. キー/プロパティ名は、引用符を使っても使わなくても有効ですか?
(例
"one" : 1
)
Yesの場合、その違いは何ですか?
Q2: 上記のオブジェクトを
JSON.stringify(testObject)
元のJSオブジェクトとJSONの違いは何ですか?
ほとんど同じような気がするのですが。詳しく教えてください。
Q3: JSON文字列のパースには、以下の方法が推奨されますか?
var javascriptObj = JSON.parse(jSonString);
解決方法は?
-
<ブロッククオート
キー/プロパティ名は、引用符の有無にかかわらず有効ですか?
オブジェクト リテラル記法を使用する際にキーを引用符で囲む必要があるのは、キーに特殊文字 (
if
,
:
,
-
など)。注目すべきは、JSONのキーである
は
で囲まれている
ダブル
を引用しています。
-
上記のオブジェクトをJSONに変換するには
var jSonString = JSON.stringify(testObject);
この2つ(JS objとJSON)の違いは何ですか?
JSON は、データ交換フォーマットです。順序付きリストや順序なしマップ、文字列、ブール値、数値をどのように文字列で表現できるかを記述した規格です。XMLやYAMLが言語間で構造化された情報を受け渡しする方法であるのと同様に、JSONも同じです。一方、JavaScriptのオブジェクトは、物理的な型です。PHPの配列やC++のクラス/構造体のように、JavaScriptのオブジェクトはJavaScriptの内部の型です。
こんな話がある。あるお店で家具を購入し、それを配送して欲しいと思ったとします。しかし、在庫があるのは展示モデルだけで、あなたはそれを買うことに同意します。
お店では、あなたが購入したタンスは生きものなのです。
var chestOfDrawers = {
color: "red",
numberOfDrawers: 4
}
しかし、タンスを郵便で送るわけにはいかないので、解体する(読み方は、ひもで縛る)。家具としては使い物にならなくなりました。もはやJSONである。そのフラットパック状態です。
{"color":"red","numberOfDrawers":4}
受け取ったら、次にタンスを再構築する(読む、解析する)。これで、オブジェクトの形に戻りました。
JSON、XML、YAMLの背後にある理由は、参加する両方の言語が理解できる形式でプログラミング言語間のデータ転送を可能にすることです。PHPやC++に直接JavaScriptオブジェクトを渡すことはできません。しかし、オブジェクトを JSON 表記、つまりデータを表現する標準的な方法に文字列化したので、JSON を送信できます。 表現 を他の言語(C++, PHP)に渡すと、その言語では 再作成 を自分のオブジェクトに変換することができます。 ベース オブジェクトのJSON表現に基づいています。
注意すべきは、JSONは関数や日付を表現できないことです。関数を持つオブジェクトを文字列化しようとすると、その関数はJSON表現から省かれます。日付は文字列に変換されます。
JSON.stringify({
foo: new Date(),
blah: function () {
alert('hello');
}
}); // returns the string "{"foo":"2011-11-28T10:21:33.939Z"}"
-
JSONの文字列をパースする場合、以下の方法が推奨されますか?
var javascriptObj = JSON.parse(jSonString);
はい、でも
古いブラウザは、JSONをネイティブにサポートしていない(IE <8)
. これらに対応するためには
json2.js
.
jQueryを使用している場合は、以下のように
jQuery.parseJSON()
を使用します。
JSON.parse()
をサポートし、それ以外の場合はカスタム実装にフォールバックして入力をパースします。
関連
-
[解決済み】TypeError: AngularJSで未定義のプロパティ'get'を読み取れない
-
[解決済み】JavaScriptで「無効な日付」のDateインスタンスを検出する
-
[解決済み] 正しいJSONコンテンツタイプは何ですか?
-
[解決済み] JSONでコメントを使用することはできますか?
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] JavaScriptで文字列が部分文字列を含むかどうかを確認する方法は?
-
[解決済み] JavaScriptでオブジェクトをディープクローンする最も効率的な方法は何ですか?
-
[解決済み] なぜGoogleはJSONレスポンスにwhile(1);を前置するのでしょうか?
-
[解決済み] JavaScriptでJSONをきれいに印刷する
-
[解決済み】オブジェクトからプロパティを削除する(JavaScript)
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] jQueryで、ユーザーがそのフィールドを編集している間、テキストフィールドの最初の文字を大文字にするにはどうすればよいですか?
-
[解決済み] 解決済み】clearInterval()が動作しない [重複] [重複]
-
[解決済み】NodeJS "ESモジュールをロードするためにインポートを使用する必要があります。"
-
[解決済み】JavaScript "Uncaught TypeError: object is not a function" 連想性の質問
-
[解決済み】Google Conversionsが動作しない - スクリプトが読み込まれない
-
[解決済み】JavaScript ランタイムエラー:'$'が未定義です。
-
[解決済み】React-Routerの子が1つしかない。
-
[解決済み】 \u003C とは何ですか?
-
[解決済み] JavaScriptでJSONオブジェクトを動的に作成する(文字列の連結は行わない)。
-
[解決済み] JSONとは何か、何に使うのか?