使用javascript构造json对象

时间:2014-03-27 18:00:54

标签: javascript arrays json

我在使用javascript构建对象时遇到问题。我想要这个:

{
    "p_id": "2",
    "p_name": "weblogic",
    "ip_list": [
        {
            "ip_id": 2690
        },
        {
            "ip_id": 2692
        },
        {
            "ip_id": 2693
        }
    ]
}

以下是我用来将数据导入对象的javascript代码:

var ipArray = [];
secTagJSON.p_name = "weblogic";
secTagJSON.p_id = "2";
for (var index=0; index < selectedArray.length; index++){
    secTagJSON.ip_list.push("ip_id": selectedArray[index]);
}

我能够为p_id和p_name构造属性,但很难创建ip_list。请让我知道如何使用javascript构建它。

发布到服务器的代码:

var ipArray = [];
secTagJSON.p_name = "weblogic";
secTagJSON.p_id = 2;
for (var index=0; index < selectedArray.length; index++){
 secTagJSON.ip_list.push({"ip_id": selectedArray[index]});
}
console.log (secTagJSON);
console.log (JSON.stringify(secTagJSON));
 $http.post("http://server:port/api/v1/tags").
    success(function(data) {
      console.log (data)
    });

2 个答案:

答案 0 :(得分:1)

尝试:

secTagJSON.p_name = "weblogic";
secTagJSON.p_id = "2";
secTagJSON.ip_list = [];
for (var index=0; index < selectedArray.length; index++){
 secTagJSON.ip_list.push({"ip_id": selectedArray[index]});
}

你忘了你的{}周围&#34; ip_id&#34;:等... 您还需要声明ip_list是一个数组。 您的ip_list是一个对象数组。我猜你的脚本没有按原样运行。

发布到您的服务器,您应该使用:

$http.post('server:port/api/v1/tags', secTagJSON).sucess(...

答案 1 :(得分:1)

只需这样做:

var obj = { ip_list: [] };

obj.p_name = "weblogic";
obj.p_id = "2";

for (var i = 0, j = selectedArray.length; i < j; i++)
   obj.ip_list.push({ ip_id: selectedArray[i] });

请注意,您的ip_list实际上是一个对象数组。因此,当您迭代它时,请记住每个var item = json.ip_list[i]将返回一个对象,您可以使用item['ip_id']访问其属性。

请注意,obj是一个Javascript对象,它不是JSON。如果您想要JSON,可以使用JSON.stringify(obj)。这将返回您的JSON(字符串)。

希望我能帮到你。