Есть json данные, чтобы отобразить их в jquery плагине генераторе дерева, нужно перевести в формат с указанием id и parent id, причем почти во всех плагинах визуализации json такой формат воспринимается по стандарту.
Есть такой объект данных
{
"product": {
"recommended": {
"article": "blabla",
"description": []
},
"article": [],
"description": [],
"manufacturer": [],
"images": {
"custom": [],
"commercial": []
},
"reviews": []
}
}
На выходе нужно получить
[{
id: 0,
parent: 0,
key: "product"
}, {
id: 1,
parent: 0,
key: "recommended"
}, {
id: 2,
parent: 1,
key: "article",
value: "blabla"
}, ...]
Подходящих библиотек для работы с деревом или функций в сети не нашлось.
var obj = {
objects: {
lol: "kek",
jack: "chebureck"
},
hz: {
obj1: "1",
objM: {
obj2: "2",
obj3: "3"
}
}
};
//^^это тестовый объект
var i = 1,//id первого класса
tree = function(obj, parent) {
var req = [];
for (var key in obj) {//переор по прямым потомкам объекта
var tmp = {
id: i,
parent: parent !== undefined ? parent : 0,//задаёт id родителя(если его нет, то 0, т.к. сам obj тоже счтается, но вы можете и -1 поставить)
key: key
},
c = obj[key].constructor === Object;//так более быстро и надёжно проверять, чем typeof
i++;
if (!c)
tmp.value = obj[key];//если в значении- не объект, то мы просто добавляем в вывод value
req.push(tmp);
if (c)//если объект, то начинается рекурсия, первый аргумент- объект из value, второе- id его родителя(текущего объекта)
tree(obj[key], tmp.id).forEach(function(el) {
req.push(el);
});
}
return req;
}
console.log(tree(obj));
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости