オブジェクトの配列を保持するオブジェクトを文字列化しようとすると、値があることがわかると空の配列が表示されます。
filterDto: {
Expressions: []
},
/* Using a tempArray to see if its an object issue of my filterDto.Expressions */
fnBuildFilterValues: function() {
var invoiceObj = this;
var tempArray = new Array();
$("#tblExpressions tr").each(function() {
var doWeAddRow = false;
var filterObject = {
"Field": {},
"Condition": {},
"DataValue": {}
};
$(this).find(":input").each(function() {
if ( $(this).attr('name') === 'ddlFieldExp' ) {
filterObject.Field = $(this).val();
}
if ( $(this).attr('name') === 'ddlConditionExp' ) {
filterObject.Condition = $(this).val();
}
if ( $(this).attr('name') === 'tbDataExp' ) {
filterObject.DataValue = $(this).val();
}
}); /* Inner loop */
tempArray.push(filterObject);
}); /* Outer loop */
invoiceObj.filterDto.Expressions = tempArray;
},
そして、私が欲しいのは、次のようなものを使用することです。
var objToString = {};
objToString = JSON.stringify(invoiceObj.filterDto)
解決策として={}を使用しようとしましたが、配列にデータが入力されると、ObjToStringが空になります。これは次のように表示されます。 {"Expressions":[]}
右側の部分でVSでクイックウォッチを実行すると、JSON.Stringifyは次のようになります。
JSON.stringify(invoiceObj.filterDto)
"{"Expressions":[{"Field":"6","Condition":"0","DataValue":"2"}]}" String
しかし、なぜObjToStringが空の結果を示しているのでしょうか。