如何将新属性值映射到JSON对象数组?

时间:2016-11-10 13:50:34

标签: arrays json express

我正在使用节点mssql包读取快速服务器中的记录集。读回值会按预期输出一组Json对象。

现在我需要修改每个Json对象的Email propoerty值。所以我尝试循环遍历记录集并更改每个索引的值:

            var request = new sql.Request(sql.globalConnection);
            request.input('p_email', sql.VarChar(50), userEmail);
            request.execute('GetDDMUserProfile', function(err, recordsets, returnValue) {      

               for (var i = 0; i < recordsets.length; i++){
                    recordsets[i].Email = "joe@gmail.com";

                }

                console.log(recordsets);

            });

但是,这段代码不是修改每个Json对象的Email值,而是将新的电子邮件属性附加到最后一个Json对象。

如何将新属性值映射到JSON对象数组?

示例输出 输出的示例如下所示,其中新的Email属性已添加到数组的末尾,而不是更改每个现有的属性值:

[  
   [  
      {  
         ID:[  
            4
         ],
         UserName:"Brian",
         Email:"joe@gmail.com"
      },
      {  
         ID:[  
            5
         ],
         UserName:"Brian",
         Email:"joe@gmail.com"
      }      
   Email:'joe@gmail.com' ]
]

1 个答案:

答案 0 :(得分:1)

这里的问题是您的数据集似乎不是JSON对象的数组,而是JSON对象数组的数组。如果您确定在最顶层的数组中始终只有一个数组,那么您可以像这样解决问题:

recordsets[0][i].Email = "joe@gmail.com";

始终以最顶层数组中的第一个数组为目标。但是,如果最顶层的阵列可能有多个阵列,那么这将是另一种需要解决的问题。