Преобразование данных таблицы HTML в объект JSON в jQuery

Кто-нибудь знает, как преобразовать таблицу таблиц HTML в хороший объект JSON для управления с помощью jQuery?

Ответы

Ответ 1

Таблица HTML? Как, все содержимое <td> в 2-мерном массиве?

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(), каждый элемент добавляется к результату.

Это может сработать для использования исходной версии jQuery и просто обернуть дополнительный массив вокруг возвращаемых значений.

Ответ 2

Вы имеете в виду следующую ситуацию?

Дано:

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;
}

Ответ 3

Мне нужно то же самое, кроме как с возможностью игнорировать столбцы, переопределять значения и не путать вложенные таблицы. Я закончил писать jQuery плагин table-to-json:

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

Все, что вам нужно сделать, это выбрать свою таблицу с помощью jQuery и вызвать плагин:

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

Вот демонстрация этого в действии:

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

Ответ 4

{ "0":"[
  ['Product','Available','Issue','With Store'],
    ['GV Rs. 100/-','4461','0','226'],
    ['PV RED','8','0','0']
  ]"
}