У меня есть массив вложенных структур JSON, где они имеют различную глубину, а не один и тот же набор ключей:
[
{
"name":"bob",
"salary":10000,
"friends":[
{
"name": "sarah",
"salary":10000
},
{
"name": "bill",
"salary":5000
}
]
},
{
"name":"marge",
"salary":10000,
"friends":[
{
"name": "rhonda",
"salary":10000
},
{
"name": "mike",
"salary":5000,
"hobbies":[
{
"name":"surfing",
"frequency":10
},
{
"name":"surfing",
"frequency":15
}
]
}
]
},
{
"name":"joe",
"salary":10000,
"friends":[
{
"name": "harry",
"salary":10000
},
{
"name": "sally",
"salary":5000
}
]
}
]
Я хотел использовать D3 для рендеринга этого как вложенных html-таблиц. Например, столбец друзей будет иметь таблицы с указанием имени и оклада друзей человека, на которые делается ссылка в строке. Иногда одна из этих таблиц будет иметь другой уровень подкатегории.
Я предполагаю, что способ сделать это - рекурсивно создавать таблицы. Я написал программу python, которая принимает структуру JSON, как это, и отображает таблицы в таблицах, и самый простой способ сделать это был рекурсивно. Я вижу, что в документации d3.js есть .each()
вещь, которую вы можете назвать, и я уверен, что мне нужно, мне просто нужно немного повысить (https://github.com/mbostock/d3/wiki/Selections#wiki-each).
Итак, есть ли хороший способ сделать это в D3? Я нашел этот отличный пример для рендеринга 2d-матрицы данных в виде таблицы Создание таблицы, связанной с файлом csv. С помощью этого учебника мне удалось получить внешний самый высокий уровень этой структуры данных, представленный в виде таблицы, но я зациклен на том, как переходить на уровни рекурсивно по мере необходимости, поскольку теперь они просто отображаются как "Объект" в таблице так как я не рассматриваю их иначе, чем обычные строки и числа.
Также я нашел этот другой вопрос/ответ, похожий на мой вопрос, но я действительно недостаточно разбираюсь в javascript, чтобы узнать, где и как происходит рекурсия, и обновил решение, соответствующее моим потребностям: Как обрабатывать данные, вложенные в несколько уровней в D3?. Любые советы или указатели на учебники по рекурсивной или итеративной обработке вложенного дерева, такие как JSON-структуры данных в D3, были бы очень оценены!