【发布时间】:2016-04-07 13:19:54
【问题描述】:
我正在处理一些 JSON 数据,我需要从一个对象中获取数据,并构建一个 JSON 对象。
已编辑:生成的 JSON 正在与 D3.js 图表库一起使用,因此出现了奇怪的问题(以及明显的反对票)
我从 API 返回的数据如下所示:
var data = [
[
{"id": 1, "key1":"value1", "key2":"value2", "key3":"value3"},
{"id": 2, "key1":"value1", "key2":"value2", "key3":"value3"},
{"id": 3, "key1":"value1", "key2":"value2", "key3":"value3"},
{"id": 4, "key1":"value1", "key2":"value2", "key3":"value3"},
{"id": 5, "key1":"value1", "key2":"value2", "key3":"value3"},
{"id": 6, "key1":"value1", "key2":"value2", "key3":"value3"}
]
];
我需要我的 JSON 将每个对象嵌套在之前的对象中,如下所示:
{
"name" : "1",
"children" : [
{
"name" : "2",
"children" : [
{
"name" : "3",
"children" : [
{
"name" : "4",
"children" : [
{
"name" : "5",
"children" : [
{
"name" : "6",
"children" : [ ]
}
]
}
]
}
]
}
]
}]
}
出于演示目的,我只在 6 处停下来 - 我需要可以处理 N 个对象的东西。
目前我正在使用_.each 循环遍历data 对象,但不知道如何进行嵌套。
任何帮助都会很棒 - 谢谢!
【问题讨论】:
-
我需要这样做,因为我正在构建一个使用这种 JSON 类型的 D3 树可视化
-
如果你的树是递归的,你的方法也应该如此。
-
我看到的问题是,对于您的要求并没有一个过于笼统的解决方案。数据可能有一些 ID 链接父母和孩子,而不仅仅是
array[n+1]是array[n]的孩子。这使得递归地构建对象成为一个不同于任意嵌套 N 层深度的函数。如果结构真的是这样,我会在这里放一些东西。 -
@cdbajorin 是的,这就是源数据的外观,以及 JSON 的结构。
-
是否有任何答案解决了您的问题?任何反馈将不胜感激。
标签: javascript json d3.js underscore.js