Задать вопрос
@roma4ever2012

Как данными из json заполнить таблицу?

Доброго времени суток!
{
  "response": {
    "type": "Заказ",
    "id": "1245",
    "items": [
      {
        "title": "Rear Window",
        "director": "Alfred Hitchcock",
        "year": 1954,
        "photo": {
          "1": "img1.jpg",
          "2": "img2.jpg",
          "3": "img3.jpg",
          "4": "img4.jpg"
        }
      },
      {
        "title": "Rear Window",
        "director": "Alfred Hitchcock",
        "year": 1954,
        "photo": {
          "1": "img5.jpg",
          "2": "img6.jpg",
          "3": "img7.jpg",
          "4": "img8.jpg"
        }
      }
    ]
  }
}

Имеется json в таком виде, подскажите как его распарсить чтобы заполнить такую таблицу данными из items
<table id="example" class="display" style="width:100%">
    <thead>
        <tr>
            <th>Заголовок</th>
            <th>Директор</th>
            <th>Возвраст</th>
            <th>Изображения.</th>
        </tr>
    </thead>
</table>
  • Вопрос задан
  • 6163 просмотра
Подписаться 2 Простой Комментировать
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
Начать следует с получения из json'а массива:

const { items } = JSON.parse(json).response;

Дальше два пути.

Первый - собираем html:

const html = `
  <tbody>${items.map(n => `
    <tr>
      <td>${n.title}</td>
      <td>${n.director}</td>
      <td>${n.year}</td>
      <td>${Object.values(n.photo).map(m => `<img src="${m}">`).join('')}</td>
    </tr>`).join('')}
  </tbody>
`;

Который затем добавляем в таблицу:

$('#example').append(html);
// или
document.querySelector('#example').insertAdjacentHTML('beforeend', html);

Второй - создаём элементы напрямую:

items.forEach(function(n) {
  const tr = this.insertRow();
  tr.insertCell().textContent = n.title;
  tr.insertCell().textContent = n.director;
  tr.insertCell().textContent = n.year;
  tr.insertCell().append(...Object.values(n.photo).reduce((acc, m) => (
    (acc[acc.length] = new Image).src = m,
    acc
  ), []));
}, document.getElementById('example').createTBody());
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@PigData
Рекомендую подключить библиотеку типа https://datatables.net/ и кроме загрузки из json получить дополнительные плюшки - сортировку, поиск и т.п.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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