【发布时间】:2011-01-15 10:47:13
【问题描述】:
有谁知道如何将 HTML 值表转换成一个漂亮的 JSON 对象,以便用 jQuery 进行操作?
【问题讨论】:
-
“表”是什么意思?数据库表? HTML 表格?
标签: jquery html json html-table
有谁知道如何将 HTML 值表转换成一个漂亮的 JSON 对象,以便用 jQuery 进行操作?
【问题讨论】:
标签: jquery html json html-table
HTML 表格?比如,二维数组中的所有<td> 内容?
var tbl = $('table#whatever tr').map(function() {
return $(this).find('td').map(function() {
return $(this).html();
}).get();
}).get();
然后只需使用 $.json(或您想要的任何库)将其转换为 JSON 字符串。
edit — 重写为使用数组原型中的原生 (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() 结果的 one 单元格的值,而是将它的每个元素都添加到结果中.
它可能可以使用原始的 jQuery 版本并在返回值周围包装一个额外的数组。
【讨论】:
.map() 方法具有(如果你问我的话,这很值得怀疑)扁平化返回数组的特性。但是,这种基本方法适用于较新的 JavaScript 环境通过 Array 原型提供的原生 .map()。
你的意思是以下情况吗?
给定:
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;
}
【讨论】:
除了能够忽略列、覆盖值以及不被嵌套表混淆之外,我需要同样的东西。我最终写了一个 jQuery 插件 table-to-json:
https://github.com/lightswitch05/table-to-json
您所要做的就是使用 jQuery 选择您的表格并调用插件:
var table = $('#example-table').tableToJSON();
这是一个实际的演示:
【讨论】:
allowHTML 可以保留 HTML 标签