web-dev-qa-db-ja.com

javascriptは、JSONオブジェクトのプロパティは未定義ではあるが未定義だと言っています

Jsonオブジェクトがあり、それを画面に出力します(alert()関数を使用):

alert(object);

結果は次のとおりです。

enter image description here

次に、idの値を画面に出力します。

    alert(object["id"]); 

結果は次のとおりです。

enter image description here

ご覧のとおり、キー「id」の値は未定義ではありません(!!!)。

ここで何が起こっているのでしょうか?!

6
steady_progress

Jsonオブジェクトは実際にはオブジェクトではなく、json文字列です。オブジェクトとして使用するには、JSON.parse(obj)などの逆シリアル化関数を使用する必要があります。多くのフレームワークには、JSON文字列を逆シリアル化する方法に対する独自の実装があります。
実際のオブジェクトでalert(obj)を実行しようとすると、結果は[object Object]またはそのようなものになります

17
Yuval Perelman

JSONは解析されないため、JavaScriptがその値にアクセスできるようにするには、最初に1行目のように解析する必要があります。

var result = JSON.parse(object);
alert(result.id);

JSON Objectedが既に解析された後、次のように値にアクセスできます。

alert(result.id);
4

それをvarに割り当ててからアクセスする必要があります。

var object = {id: "someId"};
console.log(object);
alert(object["id"]);
1
Pritam Banerjee

JavaScriptでは、を使用してオブジェクトプロパティにアクセスできます。演算子または[]を使用した連想配列インデックス付き。つまりobject.propertyはobject["property"]と同等です

あなたが試すことができます:

var obj = JSON.parse(Object);
alert(obj.id); 
0
Kevin Mencos