我是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的字符串,从而产生上述格式?
任何帮助都将受到高度赞赏。
答案 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
});
}
的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;
});
答案 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()
});
}
答案 2 :(得分:0)
JSON只是javascript对象的序列化表示,所以只需在javascript中创建对象,然后使用JSON.stringify方法进行序列化。如果你不确定如何制作一个javascript对象并为数组添加值,那么你应该做一些谷歌搜索,因为这是非常基本的东西。