我有一个像这样的json:
{
"a": {
"x": {
"y": {
"a": {},
"z": {},
"b": {}
}
},
"c": {},
"b": {
"c": {
"d": {}
}
},
"d": {},
...
}
}
有没有快速的方法将其转换为flare.json格式?
像这样:
{
"name":"a",
"children":[
{
"name":"x",
"children":
{
"name":"y",
"children":[{"name":"a", "size":0},{"name":"z","size":0},{"name":"b","size":0}]
...
}
谢谢。
答案 0 :(得分:6)
我为此提出了一系列正则表达式转换。
#replace-this #with-this
^\s*" \{"name":"
: \{\}, \},
: \{\} \}
": \{$ ","children":\[
^\s*\}, \]\},
^\s*\} \]\}
#in that order
并删除第一行和最后一行(应该是额外的{
和]}
)
应用这些正则表达式转换,
这样:
{
"a": {
"x": {
"y": {
"a": {},
"z": {},
"b": {}
}
},
"c": {},
"b": {
"c": {
"d": {}
}
},
"d": {}
}
}
将成为这个:
{
"name": "a",
"children": [{
"name": "x",
"children": [{
"name": "y",
"children": [{
"name": "a"
},
{
"name": "z"
},
{
"name": "b"
}]
}]
},
{
"name": "c"
},
{
"name": "b",
"children": [{
"name": "c",
"children": [{
"name": "d"
}]
}]
},
{
"name": "d"
}]
}
然后可以与某些d3js示例一起使用。
答案 1 :(得分:1)
您将不得不编写自己的JSON或函数来动态更改JSON。 Flare.json遵循一个遵循Mike Bostock的d3文件的模式。
我会给你一个提示。您编写的模式似乎是(在伪代码中)
array("name":"a", "children":array("name":"x","children":array(.....
基本上,您需要创建一个多维数组才能获得所需的结果。不幸的是,我不知道你是如何得到你的数据的,所以我不能告诉你更多。如果使用php使用json_encode方法
echo json_encode($jsonArray)
或在javascript中使用json.stringify
var json = JSON.stringify($jsonArray)
为了让数组变成json。
答案 2 :(得分:-1)