任何人都知道如何将HTML值表转换为一个好的JSON对象来使用jQuery进行操作?
答案 0 :(得分:31)
HTML表格?比如,二维数组中的所有<td>
内容?
var tbl = $('table#whatever tr').map(function() {
return $(this).find('td').map(function() {
return $(this).html();
}).get();
}).get();
然后只需使用$ .json(或任何你想要的库)将其转换为JSON字符串。
编辑 - 重写以使用数组原型中的原生(shim here).map()
:
var tbl = $('table#whatever tr').get().map(function(row) {
return $(row).find('td').get().map(function(cell) {
return $(cell).html();
});
});
jQuery .map()
函数具有将返回的数组展平到结果数组中的“特性”。也就是说,如果回调函数返回一个本身就是数组的值,那么返回的数组将成为.map()
结果的一个单元格的值,而不是返回的数组,而是将每个元素添加到结果。
它可能使用原始的jQuery版本,只是在返回的值周围包含一个额外的数组。
答案 1 :(得分:20)
你的意思是以下情况吗?
假设:
A1 B1 C1 ...
A2 B2 C2 ...
...
需要:
{"1": ["A1", "B1", "C1", ...],
"2": ["A2", "B2", "C2", ...], ...}
所以使用以下函数创建一个有效的JSON-String函数而不尾随“,”:
function html2json() {
var json = '{';
var otArr = [];
var tbl2 = $('#dest_table tr').each(function(i) {
x = $(this).children();
var itArr = [];
x.each(function() {
itArr.push('"' + $(this).text() + '"');
});
otArr.push('"' + i + '": [' + itArr.join(',') + ']');
})
json += otArr.join(",") + '}'
return json;
}
答案 2 :(得分:16)
除了能够忽略列,覆盖值以及不被嵌套表混淆之外,我需要相同的东西。我最终写了一个jQuery插件table-to-json:
https://github.com/lightswitch05/table-to-json
您所要做的就是使用jQuery选择表并调用插件:
var table = $('#example-table').tableToJSON();
以下是它的实际演示: