@Osklizg

Как вставить json объекты в таблицу?

C БД приходит в виде строки String json :
{"tables": [{"Ext_TeleserviceCode":"11","Ellipsis":"","NACarrierID":"","CallingPartyNumber":"93967767","CamelBusy":"","GSM_ForwardingPending":"","EventTypeBCSM0":"C0"},
{"Ext_TeleserviceCode":"12","Ellipsis":"","NACarrierID":"","CallingPartyNumber":"93939643","CamelBusy":"","GSM_ForwardingPending":"","EventTypeBCSM0":"C0"}]}

Потом у меня получается вытащить каждый json объект по отдельности. Мне нужно нарисовать таблицу на веб интерфейсе, куда бы складывались все эти значения.
Поискал примеры, везде фигурирует JavaScript. Пример типа:
function CreateTableFromJSON() {
        var myBooks = [
            {
                "Book ID": "1",
                "Book Name": "Computer Architecture",
                "Category": "Computers",
                "Price": "125.60"
            },
            {
                "Book ID": "2",
                "Book Name": "Asp.Net 4 Blue Book",
                "Category": "Programming",
                "Price": "56.00"
            },
            {
                "Book ID": "3",
                "Book Name": "Popular Science",
                "Category": "Science",
                "Price": "210.40"
            }
        ]


Но у меня все эти значения хранятся в одной переменной.
Подскажите пожалуйста, возможно ли какими то способами засунуть переменную String json в структуру JavaScript или какие еще могут быть решения проблемы.
  • Вопрос задан
  • 2904 просмотра
Пригласить эксперта
Ответы на вопрос 4
@forgetable
Node/Flutter/C++
Всё дело в парсинге. Вот вам приходит большая JSON-строка в качестве параметра JSON. потом выделаете следующее:
(json) => {
  let parsedData = JSON.parse(json);
}

Теперь у вас объект, из которого вы можете достать вашу переменную tables, которая является массивом. Чтобы преобразовать один массив в объект, подобный тому, что вы указали, нужен метод Reduce.
Если вы в ладах с английским, то советую посмотреть первую и вторую части хорошего урока по reduce. Если не в ладах, то читайте оф.документацию. Если вкратце, reduce - мощное средство, которое делает из массива один объект, будь то коллекция, другой массив, строка. В вашем случае нужно массив перевести в коллекцию.
Ответ написан
Комментировать
ThunderCat
@ThunderCat Куратор тега JavaScript
{PHP, MySql, HTML, JS, CSS} developer
поясните как у вас появляется json на фронтенде? Пхп, жава на бэке? Получать объект/массив на бэкенде(куча функций под все), на фронт выводится уже из массива.
Ответ написан
@fedornabilkin
Присваиваем переменной строку json. Перебираем в цикле и вставляем данные в необходимые места.
var collection = '{"tr": [{"td1": "name1","td2": "name2"},{"td1": "name1","td2": "name2"}]}';
var tr += '';
$.each(collection, function(i, tr){
tr += '<tr><td>'+tr.td1+'</td><td>'+tr.td2+'</td></tr>';
});
$('table').html(tr);

Это образно. Правильнее было клонировать строку из имеющейся таблицы и подставлять данные в нее.
Ответ написан
@dimentimor
Превратить json в объект можно так:
// json
var json = '{"foo": "bar", "lorem": "ipsum"}';

// Парсим в объект
var obj = JSON.parse(json);

// в цикле обходим свойства объекта
// добавляя значения в таблицу
for (var i in obj) {
	var td = document.createElement('td');
	td.innerHTML = obj[i];
	tr.appendChild(td);
}


В реальности алгоритм чуть сложней, т.к. надо из ключей составить заголовки столбцов, а из значений- ячейки. Но это уже другая тема)
p.s.
Если у вас массив объектов, то надо массив обходить в одном цикле, и для каждого объекта в массиве выполнять обход в вышеприведенном цикле.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы