3

我想将 javascript 数组值添加到 JSON 值对象中。另一个元素也替换了我的元素,如收件人、主题、消息。我得到了像这样的Json:

在此处输入图像描述

下面是我的代码。

var BODY = {
    "recipients": {
      "values": [
     ]
    },
   "subject": title,
   "body": message
}

var values = [];
for (var ln = 0; ln < names.length; ln++) {
var item1 = {
    "person": {
            "_path": "/people/"+names[ln],
            },
};
values.push(item1);
}
BODY = JSON.stringify({values: values});
alert(BODY);
4

4 回答 4

13

我认为您想从数组中创建对象并将其与旧对象(BODY.recipients.values)结合起来,如果是这样,那么您可以在从数组中准备对象后使用$.extent(因为您正在使用jQuery/tagged)方法

var BODY = {
    "recipients": {
        "values": []
    },
    "subject": 'TitleOfSubject',
    "body": 'This is the message body.'
}

var values = [],
names = ['sheikh', 'muhammed', 'Answer', 'Uddin', 'Heera']; // for testing
for (var ln = 0; ln < names.length; ln++) {
    var item1 = {
        "person": { "_path": "/people/"+names[ln] }
    };
    values.push(item1);
}

// Now merge with BODY
$.extend(BODY.recipients.values, values);

演示。

于 2013-09-28T08:10:09.927 回答
1

如果您想坚持使用填充值数组的方式,则可以像这样分配此数组:

BODY.values = values;

循环之后。

它应该如下所示:

var BODY = {
    "recipients": {
      "values": [
     ]
    },
   "subject": title,
   "body": message
}

var values = [];
for (var ln = 0; ln < names.length; ln++) {
var item1 = {
    "person": {
            "_path": "/people/"+names[ln],
            },
};
values.push(item1);
}
BODY.values = values;
alert(BODY);

一旦您将 JSON.stringify() 作为参数传递给 AJAX 调用,它就会很有用。请记住:BODY 对象中的 values 数组与 var values = [] 不同。您必须将外部值 [] 分配给 BODY.values。这是 OOP 的优点之一。

于 2013-09-28T07:38:56.093 回答
0
var arr = [ 'a', 'b', 'c'];
arr.push('d'); // insert as last item
于 2013-09-28T07:40:34.787 回答
0

您可以直接访问BODY.values

for (var ln = 0; ln < names.length; ln++) {
  var item1 = {
    "person": {
      "_path": "/people/"+names[ln],
    },
  };

  BODY.values.push(item1);
}
于 2013-09-28T07:25:02.273 回答