0

javascriptオブジェクトがあります。

var homeObject=JSON.parse(JSON.stringify(BuildingObject));
var flatNumber=homeObject.flatNo;

それで、JSON変換なしで直接flatNoプロパティを取得する方法はありますか?

また、さらにメモを追加します。

BuildingObject.flatNoJSON変換なしで直接アクセスした場合、未定義を返します

BuildingObjectのJSON出力を以下に示します

{

    "flatNo": "34",
    "objectId": "4oRaVl96ZQ",
    "createdAt": "2013-03-01T17:35:27.724Z",
    "updatedAt": "2013-03-01T17:40:45.804Z"
}

まだびっくり!印刷しBuildingObject.createdAtBuildingObject.updatedAt。問題は文字列オブジェクト「flatNo」と「objectId」にあります

4

2 に答える 2

2

この問題は、JSON.stringify()が最初にオブジェクトに対してtoJSON()を呼び出そうとするという事実に起因する可能性が高いため、toJSON()が元のオブジェクトのキーではないプロパティを追加している可能性があります。例えば

var test = {
    toJSON: function () {
        return {
            foo: "bar"
        };
    }
};

console.log(JSON.stringify(test));
// outputs: {"foo":"bar"} 

console.log(test.foo);
// outputs: undefined

console.log(test.toJSON().foo);
// outputs: bar

したがって、あなたの場合、次のことができます。

a)BuildingObjectにflatNo用の何らかのアクセサ関数があるかどうかを確認します(例:BuildingObject.get('flatNo'))

また

b)BuildingObject.toJSON()。flatNoを使用します

于 2013-03-06T18:16:23.587 に答える
1

BuildingObjectがと呼ばれるプロパティを含むオブジェクトの場合flatNo、プロパティは標準のJavaScript構文で読み取ることができます。

  • BuildingObject.flatNo
  • BuildingObject["flatNo"]

テストコード:

var BuildingObject = {
    flatNo: 314
};
console.log(BuildingObject.flatNo, BuildingObject["flatNo"]);

...期待どおりに印刷します:

314 314

JavaScriptオブジェクトを処理するときにJSONを使用する必要はまったくありません。一般的に信じられていることですが、JSONはJavaScript構文に触発されたプレーンテキストのデータ形式に他なりません。JSONはJavaScriptではなく、「JSONオブジェクト」(JavaScriptオブジェクトを参照するStackOverflowの無限の質問で読むことができる用語)としては何もありません。JSONの場合は文字列だからです。

BuildingObject.flatNo未定義を返す場合は、それBuildingObjectが行うと思うことを含まないか、テストのどこかに欠陥があります。

于 2013-03-06T17:56:21.757 に答える