【发布时间】:2012-01-20 17:17:26
【问题描述】:
在尝试对包含对象数组的对象进行字符串化时,当我看到我有值时,我得到一个空数组。
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 显示一个空的结果?
【问题讨论】:
-
invoiceObj.filterDto.Expressions = tempArray;
-
你在哪里做 JSON.stringify()?你没有向我们展示这一点。我猜你没有在正确的事情上做 JSON.stringify() 。仅供参考,当您将变量初始化为对象时,您只需为其分配其他内容。
-
我可以在该函数的出口正下方执行 var test = JSON.stringify(invoiceObj.filterDto) 并且得到相同的结果。我稍后在 jqGrid 帖子中调用 stringify,但问题在于该对象如何从 JSON 格式化
-
你有公共页面吗,我们可以看到这个吗?在调试器中单步执行并检查变量将显示发生了什么。
标签: javascript arrays json stringify