将常规json转换为flare.Json为d3.js

Convert regular json to flare.json for d3.js?

本文关键字:Json d3 js flare json 转换 常规      更新时间:2023-09-26

我有一个json,像这样:

{
"a": {
    "x": {
        "y": {
            "a": {}, 
            "z": {}, 
            "b": {}
        }
    }, 
    "c": {}, 
    "b": {
        "c": {
            "d": {}
        }
    }, 
    "d": {}, 
     ...
    }
}

是否有一种快速的方法将其转化为耀斑。json格式吗?

一样:

{
"name":"a",
"children":[
      {
      "name":"x",
      "children":
            {
              "name":"y",
              "children":[{"name":"a", "size":0},{"name":"z","size":0},{"name":"b","size":0}]
...
}

谢谢。

我已经为此提出了一系列正则表达式转换。

 #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的例子中使用。

您将不得不编写自己的JSON或函数来动态更改JSON。耀斑。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)

你可以使用d3.nest(),但是这个函数不会给你想要的大小,甚至。在将数据发送到应用程序之前,您可能需要相应地格式化数据。

如果你想创建一个自定义函数,那么你可以看看这个答案并迭代你的对象的键,因为它甚至不是一个数组。