代码之家  ›  专栏  ›  技术社区  ›  Jimmy

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

  •  19
  • Jimmy  · 技术社区  · 16 年前

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

    3 回复  |  直到 9 年前
        1
  •  30
  •   Pointy    13 年前

    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()。 结果,其元素都添加到结果中。

    可以 使用原始的jquery版本,只需在返回的值周围包装一个额外的数组。

        2
  •  20
  •   John Rumpel    13 年前

    你是指以下情况吗?

    鉴于:

    A1 B1 C1 ...
    A2 B2 C2 ...
    ...
    

    需要:

    {"1": ["A1", "B1", "C1", ...], 
     "2": ["A2", "B2", "C2", ...], ...}
    

    因此,请使用以下函数,该函数创建有效的JSON字符串函数,不带尾随“”:

    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;
    }
    
        3
  •  16
  •   lightswitch05    13 年前

    除了可以忽略列、重写值以及不被嵌套表混淆之外,我还需要同样的功能。我最后写了一个jquery插件表到json:

    https://github.com/lightswitch05/table-to-json

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

    var table = $('#example-table').tableToJSON();
    

    下面是一个实际的演示:

    http://jsfiddle.net/Crw2C/173/