У меня есть путь (в виде строки), какКак сформировать вложенный объект JSON из массива?
A/B/C/D
. Я хочу, чтобы представить его в качестве объекта JSON следующим образом:
{
A:{
B:{
C:D
}
}
}
Теперь давайте говорить, что я добавить путь
A/B/C/X
то JSON РЕКОМЕНДУЕМЫМ Посмотрите, как
{
A:{
B:{
C:[D,X]
}
}
}
Так что я делаю, когда я получаю путь, я его разделяю и храню в массив следующим
var struct = {};
var path = $scope.path.split("/"); //assuming $scope.path holds the path
for(var i =0;i<path.length-1;i++)
{
struct[path[i]] = path[i+1];
}
Однако это приводит к JSon, как {A: "B", B: "C", C: "D"}
. Как это исправить? Есть ли рекурсивный способ сделать это?
EDIT: Моя предыдущая схема приведет к ошибке. Как предположил Кевин Б., я обновляю схему до чего-то типа [{name: 'A', children: [{name: 'B', children: []}]}]
У вас не может быть два идентичных ключа в объекте, поэтому вы никогда не получите 'C: D' и' C: X' в объекте 'B',' C' нужно будет преобразовать в массив '[ D, X] 'или' B', чтобы быть массивом '[{C: D}, {C: X}]' – SmokeyPHP
* «Есть ли рекурсивный способ сделать это?» * Да, перебирать по пути , на каждой итерации на один уровень углубляйтесь в объект, пока не пройдете весь путь. Однако сначала вам нужно придумать схему, которая действительно работает, в предыдущем комментарии. –
Исправил мой вопрос о несоответствии. – Dubby