Я пытаюсь написать систему, в которой клиент (на основе браузера) запрашивает дерево, которое должно быть возвращено с сервера (механизм приложений, но это не имеет значения). Проблема заключается в преобразовании дерева в JSON: поскольку каждый объект ссылается на объекты «под ним», при его разбивке я получаю чрезвычайно длинную строку, которая при разборе создает новые объекты для каждого дочернего элемента вместо ссылок на другие узлы.
Моим текущим решением было бы написать функции «equalTo» и «toString» (преобразование ссылок на объекты в строки), чтобы преобразовать в массив массив, а затем воссоздать его на стороне клиента, разрешив строки в объектах. Это решение заставляет мои чувства ужасного алгоритма покалывать, но должен быть лучший способ вернуть такие структуры через JSON!
РЕДАКТИРОВАТЬ: мне просто пришло в голову, что ссылки на объекты также могут быть преобразованы в индексы массива. Это лучшее решение, но в нем все еще чувствуется плохой код.
EDIT2: Верно, так что я полагаю, что псевдокод в порядке.
var node = {
children : null;
};
var root = Object.create(node);
var level1a = Object.create(node);
var level1b = Object.create(node);
var level2a = Object.create(node);
var level2b = Object.create(node);
root.children = [level1a, level1b];
level1a.children = [level2a, level2b];
Итак, вы получите дерево, которое выглядит так:
stackoverflow не позволяет мне публиковать изображения