オブジェクトの配列を保持するオブジェクトを文字列化しようとすると、値がわかると空の配列が得られます。オブジェクトの配列を保持するオブジェクトを文字列化するためにJSONを使用しようとしています
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":[]}
私は右手部分、JSON.StringifyにVSで[クイックウォッチをすれば、私はこの取得:
JSON.stringify(invoiceObj.filterDto)
"{"Expressions":[{"Field":"6","Condition":"0","DataValue":"2"}]}" String
しかし、なぜObjToStringは空の結果を示しているの?
invoiceObj.filterDto.Expressions = tempArray; – cjsmith
JSON.stringify()はどこでやっていますか?あなたは私たちにそれを示していない。私はあなたが正しいことでJSON.stringify()をやっていないことを推測しています。参考までに、変数をオブジェクトに初期化することは、何か他のものを代入するだけでは何もしません。 – jfriend00
私はvar test = JSON.stringify(invoiceObj.filterDto)をその関数の終了のすぐ下に置くことができ、私は同じ結果を得ます。 jqGridポストの中でstringifyを呼び出すのですが、このオブジェクトがJSONからどのようにフォーマットされるのかという問題があります。 – cjsmith