在jQuery中将HTML表数据转换为JSON对象

在jQuery中将HTML表数据转换为JSON对象,jquery,html,json,html-table,Jquery,Html,Json,Html Table,有人知道如何将一个HTML值表转换成一个漂亮的JSON对象,以便使用jQuery进行操作吗?一个HTML表?比如,二维数组中的所有内容 var tbl = $('table#whatever tr').map(function() { return $(this).find('td').map(function() { return $(this).html(); }).get(); }).get(); 然后只需使用$.json(或任何您想要的库)将其转换为json字符串 编辑

有人知道如何将一个HTML值表转换成一个漂亮的JSON对象,以便使用jQuery进行操作吗?

一个HTML表?比如,二维数组中的所有
内容

var tbl = $('table#whatever tr').map(function() {
  return $(this).find('td').map(function() {
    return $(this).html();
  }).get();
}).get();
然后只需使用$.json(或任何您想要的库)将其转换为json字符串

编辑-重新编写以使用阵列原型中的本机()
.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版本,只需在返回的值周围包装一个额外的数组就可以了。

除了能够忽略列、重写值和不被嵌套表混淆之外,我还需要同样的功能。最后,我将jQuery插件表写入json:

您只需使用jQuery选择表并调用插件:

var table = $('#example-table').tableToJSON();
下面是一个正在运行的演示:


你是指以下情况吗

鉴于:

A1 B1 C1 ...
A2 B2 C2 ...
...
需要:

{"1": ["A1", "B1", "C1", ...], 
 "2": ["A2", "B2", "C2", ...], ...}
因此,请使用以下函数创建一个有效的JSON字符串函数,该函数不带尾随“,”:


你说的“桌子”是什么意思?数据库表?HTML表格?这个问题可能是3年前的重复,并且有一个公认的答案,哈哈,你为什么要回答它?好吧,很多人会遇到与OP相同的问题。@John的答案可能会为他们提供额外的解决方案漂亮的镜头,太神奇了。这里的笑话可能是这根本不起作用。jQuery
.map()
方法具有平坦返回数组的特性(如果你问我的话,这很有问题)。不过,这种基本方法可以与更新的JavaScript环境通过阵列原型提供的本机
.map()
配合使用。这非常有用!!顺便说一句@Pointy,如果每个TD都有一个单独的类,比如bah bah bah…,我可以将它转换为json吗,这样类名就变成了属性名==>“message”:“bah bah bah…”,谢谢lot@VirtualJasper是的,您当然可以这样做,但您需要为每个单元构造一个对象。我要问一个新问题。坏的是,如果单元格中有html标记,它将被替换为空字符串。@JerryLiang有一个选项
allowHTML
来保留htmltags@lightswitch05在JSFIDLE中,如果表中包含下拉列表,则说明如何在json中仅获取选定值。。。(在我的情况下,senario与您所说的一样,也可以很好地处理您的小提琴,但在我的表格中,State(dropdown)的列比json中更多。请帮助我…谢谢)Ghanshyam,不要使用此工具提取表单数据,请使用标准表单
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;
}