【问题标题】:Attempting to use JSON to stringify an object that holds an array of objects尝试使用 JSON 对包含对象数组的对象进行字符串化
【发布时间】: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


【解决方案1】:

您粘贴的代码运行良好,证明 by this code(console.log 中的 JSON 序列化)。

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

【讨论】:

  • 是的,这正是正在发生的事情。我调用 fnBuildFilterValues,然后在函数返回后重新加载一个网格:$('#gridMaster').trigger("reloadGrid");但是它在没有更新的 postData 的情况下重新加载,并且每次都使用第一个条目 postdata(当然是空版本)谢谢你的推送。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-06-06
  • 2020-09-04
  • 1970-01-01
  • 2016-11-10
  • 2015-06-11
  • 2018-09-14
  • 2020-12-08
相关资源
最近更新 更多