如何通过迭代获取值来在jquery中创建JSON对象

时间:2014-03-21 04:11:10

标签: javascript jquery json

我是JSON和jquery的新手。我有以下用例需要一些帮助。

我需要以下列格式创建一个对象数组:

{ "endpoint" : [ 
    { "ip": "16.140.23.90", "mac": "a2:35:67:e7" },
    { "ip": "16.140.23.91", "mac": "36:b1:79:ab" }
  ]
}

这是我需要的样本(仅代表两行,可以有更多行)。现在我需要通过遍历表的所选行来添加ip和mac的值。 例如。在GUI上有一个表,其中每行有两列" IP"和" MAC"。我需要以上述格式获取所选行的数据。

当我需要在迭代时添加属性的值时,如何以上述格式形成JSON数组?我可以用JSON.stringify API做什么吗?如果是,那么如何形成我可以传递给JSON.stringify的字符串,从而产生上述格式?

任何帮助都将受到高度赞赏。

3 个答案:

答案 0 :(得分:2)

如果这是你的表(第一个单元格是ip,第二个单元格是mac)

<table id='tbl'>
    <tr><td>16.140.23.90</td><td>a2:35:67:e7</td></tr>
    <tr><td>16.140.23.91</td><td>36:b1:79:ab</td></tr>
</table>

纯JS

var ips = { "endpoint" : [] };
var tbl = document.getElementById('tbl');
for (var i=0; i<tbl.rows.length; i++) {
    ips["endpoint"].push({
        "ip" : tbl.rows[i].cells[0].innerHTML,
        "mac" : tbl.rows[i].cells[1].innerHTML
    });
}

Fiddle

的jQuery

var ips = { "endpoint" : [] };
$(document).ready(function() {
    $('#tbl tr').each(function(i) {
        ips["endpoint"].push({
            "ip" : $(this).find('td:eq(0)').text(),
            "mac" : $(this).find('td:eq(1)').text()
        });
    });
    var json = (JSON.stringify(ips));
    document.getElementById('json').innerHTML = json;
});

Fiddle

答案 1 :(得分:1)

第一个答案是好的。但由于这个问题与jquery有关,我提供了一个类似的解决方案,使用jquery来操作DOM。 表格仍然相同:

<table id='tbl'>
    <tr><td>16.140.23.90</td><td>a2:35:67:e7</td></tr>
    <tr><td>16.140.23.91</td><td>36:b1:79:ab</td></tr>
</table>

用于创建json对象的javascript代码:

var ips = { "endpoint": [] };
var rows = $('#tbl tr');
for (var i = 0; i < rows.length; i++) {
    ips["endpoint"].push({
        "ip": rows.eq(i).find("td").eq(0).text(),
        "mac": rows.eq(i).find("td").eq(1).text()
    });
}

Fiddle

答案 2 :(得分:0)

JSON只是javascript对象的序列化表示,所以只需在javascript中创建对象,然后使用JSON.stringify方法进行序列化。如果你不确定如何制作一个javascript对象并为数组添加值,那么你应该做一些谷歌搜索,因为这是非常基本的东西。