【问题标题】:Building JSON with array elements array values are undefined使用数组元素构建 JSON 数组值未定义
【发布时间】:2016-12-06 11:18:22
【问题描述】:

我想要实现的是通过 REST 消息发送值,我试图将这些值放在 JSON 格式中,以便它们可以放在表单上的字段中。

var membersToAddArry = [];
membersToAddArry = request.queryParams.MembersToAdd.toString().split(";");    

   for(var x = 0; x < membersToAddArry.length-1; x++)
    {
        dn = membersToAddArry[x].toString();
        userJSONAdd["DistinguishedName"] = dn;
        userJSONAddn[x] = userJSONAdd;
    }
    return userJSONAddn;

发送的数据:

CN=smcgh,OU=Lost-Found,OU=Corp,DC=test,DC=COMPANY,DC=com;

CN=syouz,OU=Lost-Found,OU=Corp,DC=test,DC=COMPANY,DC=com;

这会返回:

    {
  "result": {
    "0": {
      "DistinguishedName": "CN=syouz,OU=Lost-Found,OU=Corp,DC=test,DC=COMPANY,DC=com"
    },
    "1": {
      "DistinguishedName": "CN=syouz,OU=Lost-Found,OU=Corp,DC=test,DC=COMPANY,DC=com"
    }
  }
}

这两条信息在重复,我该如何阻止呢?

【问题讨论】:

  • 您确定要以分号而不是逗号分隔吗?
  • 数组中的最后一个条目是"",而您在每个循环中覆盖 userJSONAdd,所以只剩下最后一个元素,恰好是空字符串…
  • @KamenMinkov 我很遗憾需要全名
  • @deceze 我将长度更改为长度 -1 仍然没有解决问题
  • 检查您的数组membersToAddArry 以删除重复元素

标签: javascript arrays json for-loop javascript-objects


【解决方案1】:

在 for 循环中重新初始化您的对象 userJSONAdd。否则,您添加两次相同的对象,但您更改了字段 DistinguishedName 的值,因此您获得了两次相同的值:

var membersToAddArry = [];
membersToAddArry = request.queryParams.MembersToAdd.split(";");    

for(var x = 0; x < membersToAddArry.length-1; x++)
{
    userJSONAdd = {};
    dn = membersToAddArry[x].toString();
    userJSONAdd["DistinguishedName"] = dn;
    userJSONAddn[x] = userJSONAdd;
}
return userJSONAddn;

【讨论】:

    猜你喜欢
    • 2014-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-28
    • 1970-01-01
    • 2014-09-24
    • 1970-01-01
    • 2011-04-23
    相关资源
    最近更新 更多