Как из таблицы сделать JSON?

<table id="print-table">
								<tbody><tr class="main-head-table">
									<th>ФИО</th>
									<th>Должность</th>
									<th>Внутренний номер</th>
								</tr>
							<tr>
									<td colspan="7" style="text-align: center; font-weight: bold;" class="hide-tr">Администрация</td>
								</tr><tr>
									<td>wer</td>
									<td>sdf</td>
									<td>10001</td>
								</tr><tr>
									<td>sdf</td>
									<td>sdf</td>
									<td>10002</td>
								</tr>
								</tr></tbody></table>

Как из такой таблицы сделать такой json
someJSONdata = [
{
name: 'John Doe',
rank: 'john@doe.com',
phone: '111-111-1111'
},
{
name: 'Barry Allen',
rank: 'barry@flash.com',
phone: '222-222-2222'
},
{
name: 'Cool Dude',
rank: 'cool@dude.com',
phone: '333-333-3333'
}
]
  • Вопрос задан
  • 3748 просмотров
Решения вопроса 3
@NyoNor
Без JQuery:

function tableToJson() {
  let result = [];
  let table = document.getElementById("print-table").getElementsByTagName("tbody")[0];
  let trs = table.getElementsByTagName("tr");
  for (let i = 2; i < trs.length; i++) {
    let tds = trs[i].getElementsByTagName("td");
    let obj = {};
      obj.name = tds[0].innerHTML;
      obj.rank = tds[1].innerHTML;
      obj.phone = tds[2].innerHTML;
      result.push(obj);
  }
  return JSON.stringify(result);
}
Ответ написан
Комментировать
@gh0sty
Веб-разработчик. Пишу под Python Django.
Пробегайся по tbody tr и закидывай в словарь. Первый тег jQuery - поэтому, наверняка поймешь, что это each и push для готового словаря.

UPD:
Увидел, что все печально - поэтому ня:

var json_table = [];
$('#print-table tbody tr').slice(2).each(function() {
    var tds = $(this).children('td');
    json_table.push({
        name: tds[0].text(),
        rank: tds[1].text(),
        phone: tds[2].text(),
    });
});

Чет тип того, отдебажишь там, писал в слепую.
Ответ написан
Babayka_od
@Babayka_od
Full-stack developer
Вариант без jQuery, может кому-то будет интересно - https://jsfiddle.net/56ob7uye/9/
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы