У меня довольно большой вывод JSON с сервера, который мне нужно использовать в качестве источника данных для Tabulator.js на веб-странице. JSON является вложенным - 4x:
[{ "svn-revision" : "0.1", "timestamp" : "2019-10-28 12:18:19", "standort" : "Somewhere", "ausbildungen" : [
{ "id" : "", "about" : "Red", "subheader" : "", "klassen" : "stuff", "kurse" : [
{ "id" : "241", "datum" : "2019-12-20", "idstandort" : "40", "standort" : "House1", "bemerkung" : "", "kursplan" : "", "termine": [
{ "id" : "690", "datum" : "2020-01-04", "zeit_von" : "12:35:00", "zeit_bis" : "13:25:00", "about" : "lovely 01", "ids" : "" },
{ "id" : "691", "datum" : "2020-01-04", "zeit_von" : "13:30:00", "zeit_bis" : "15:10:00", "about" : "greedy 01", "ids" : "" },
{ "id" : "931", "datum" : "2019-12-20", "zeit_von" : "16:15:00", "zeit_bis" : "17:15:00", "about" : "lovely 02", "ids" : "" },
{ "id" : "932", "datum" : "2019-12-20", "zeit_von" : "18:15:00", "zeit_bis" : "19:15:00", "about" : "greedy 02", "ids" : "" },
{ "id" : "933", "datum" : "2019-12-21", "zeit_von" : "08:00:00", "zeit_bis" : "09:40:00", "about" : "greedy 03", "ids" : "" },
{ "id" : "946", "datum" : "2020-01-04", "zeit_von" : "09:50:00", "zeit_bis" : "11:30:00", "about" : "hate 16", "ids" : "" }]
},
{ "id" : "278", "datum" : "2019-11-08", "idstandort" : "40", "standort" : "House1", "bemerkung" : "14:25", "kursplan" : "", "termine": [
{ "id" : "657", "datum" : "2019-11-08", "zeit_von" : "14:25:00", "zeit_bis" : "15:15:00", "about" : "lovely 02", "ids" : "" },
{ "id" : "681", "datum" : "2019-11-08", "zeit_von" : "15:20:00", "zeit_bis" : "17:00:00", "about" : "lovely 08", "ids" : "" }]
},
{ "id" : "279", "datum" : "2019-11-08", "idstandort" : "40", "standort" : "House2", "bemerkung" : "15:20", "kursplan" : "", "termine": [
{ "id" : "657", "datum" : "2019-11-08", "zeit_von" : "14:25:00", "zeit_bis" : "15:15:00", "about" : "greedy 03", "ids" : "" },
{ "id" : "681", "datum" : "2019-11-08", "zeit_von" : "15:20:00", "zeit_bis" : "17:00:00", "about" : "greedy 09", "ids" : "" }]
},
}]
} ]
}]
Так что я ищу рекурсивный алгоритм, который изменяет это: Исходный формат:
[{lvl0[
{lvl1-0[
{lvl2-0[
{lvl3-0-a},
{lvl3-1-b},
{lvl3-2-c}]
},
{lvl2-1[
{lvl3-0-d},
{lvl3-1-e},
{lvl3-2-f}]
}
]
},
{lvl1-1[
{lvl2-0[
{lvl3-0-g},
{lvl3-1-h},
{lvl3-2-i}]
},
{lvl2-1[
{lvl3-0-j},
{lvl3-1-k},
{lvl3-2-l}]
}
]
}
]}]
на это:
[{lvl3-0-a, data from lvl2-0, data from lvl1-0, data from lvl0},
{lvl3-1-b, data from lvl2-0, data from lvl1-0, data from lvl0},
{lvl3-2-c, data from lvl2-0, data from lvl1-0, data from lvl0},
{lvl3-0-d, data from lvl2-1, data from lvl1-0, data from lvl0},
{lvl3-1-e, data from lvl2-1, data from lvl1-0, data from lvl0},
{lvl3-2-f, data from lvl2-1, data from lvl1-0, data from lvl0},
{lvl3-0-g, data from lvl2-0, data from lvl1-1, data from lvl0},
{lvl3-1-h, data from lvl2-0, data from lvl1-1, data from lvl0},
{lvl3-2-i, data from lvl2-0, data from lvl1-1, data from lvl0},
{lvl3-0-j, data from lvl2-1, data from lvl1-1, data from lvl0},
{lvl3-1-k, data from lvl2-1, data from lvl1-1, data from lvl0},
{lvl3-2-l, data from lvl2-1, data from lvl1-1, data from lvl0,}]
Итак, мой конечный объект должен выглядеть следующим образом:
{ "id" : "690", "datum" : "2020-01-04", "zeit_von" : "12:35:00", "zeit_bis" : "13:25:00", "about" : "lovely 01", "ids" : "" ,"idstandort" : "40", "standort" : "House1", "bemerkung" : "", "kursplan" : "","standort" : "Somewhere"}
Я довольно новичок в JSON и пока не использовал здесь рекурсию. Что я пробовал: я пытался использовать нотацию tabular.js lvl0.lvl1.lvl2.lvl3something
, но не получил данных, так как это не работает с массивами. Я застрял на этом некоторое время и действительно не могу найти никакого ответа на этот вопрос, все вопросы, которые я могу найти, касаются выравнивания массивов, в то время как мне нужно расширить листы с помощью верхней информации lvl. Я пытался разобрать его с php без успеха. Как мне это сделать? Возможно, есть какое-то простое решение, которое ускользает от меня? Нужно ли сохранять данные в другой файл или я могу просто разобрать их и отправить в tabulator.js? Спасибо за любую помощь.