尝试使用JSON对包含对象数组的对象进行字符串化

时间:2011-12-14 22:45:36

标签: javascript arrays json stringify

当试图对包含对象数组的对象进行字符串化时,当我看到有值时,我得到一个空数组。

 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显示空结果?

1 个答案:

答案 0 :(得分:0)

您粘贴的代码工作正常,如by this code(console.log中的JSON序列化)。

您的问题是在序列化尝试之前未调用fnBuildFilterValues吗?你的问题是你的选择器没有产生任何结果吗?问题似乎与粘贴的代码无关。