当前位置: 首页 > 面试题库 >

从平面JSON生成(多级)flare.json数据格式

拓拔安邦
2023-03-14
问题内容

我有一个扁平的json文件结构,例如:

[
 { "name" : "ABC", "parent":"DEF", "relation": "ghi", "depth": 1 },
 { "name" : "DEF", "parent":"null", "relation": "null", "depth": 0 },
 { "name" : "new_name", "parent":"ABC", "relation": "rel", "depth": 2 }
 ....
 ....
 ]

我想要的是一个嵌套的文件结构,如:

[ 
 {
   "name": "DEF",
   "parent": "null",
   "relation": "null",
   "children": [
                 { "name": "ABC",
                   "parent": "DEF",
                   "relation": "ghi",
                   "children": [
                                 "name": "new_name",
                                 ...
                                 "children": []
                               ]
                 }
               ]
  }
 ]

对于应该深入多少层没有限制。我当前拥有的最大值是30。一个节点可以拥有的子级数量没有限制。例如。根节点将其余所有节点作为其子节点。

到现在为止我一直在尝试什么?

  • 阅读有关d3.nest()的信息,以及它如何能够嵌套但并不完美。 https://groups.google.com/forum/?fromgroups=#!topic/d3-js/L3UeeUnNHO8/discussion

  • 为此编写了一个python脚本,但是它卡在空值中,并且由于数据没有边界(每天以两位数增加),因此非常慢。

  • 我尝试使用力导向布局,效果很好,但是我想添加另一种布局以使可视化变得容易。

  • 我可以发布一些其他的python脚本,但是它们似乎除了“ name”和“ children”之外没有任何其他信息。

  • 我读了这篇文章:http : //blog.pixelingene.com/2011/07/building-a-tree-diagram-in-d3-js/, 但它们也首先具有正确的格式数据。我打算创建的是http://bl.ocks.org/mbostock/4339083。

数据源是我正在通过python获取和解析的MS SQL Server数据库。请帮助!在过去的两个星期中,我一直坚持这一点。

谢谢


问题答案:

这是一个使用Javascript的实现:http :
//jsfiddle.net/9FqKS/

首先,创建基于名称的地图以方便查找。有几种不同的方法可以执行此操作-
在这种情况下,我使用一个.reduce方法,该方法以一个空对象开头并遍历data数组,为每个节点添加一个条目:

// create a {name: node} map
var dataMap = data.reduce(function(map, node) {
    map[node.name] = node;
    return map;
}, {});

这等效于:

var dataMap = {};
data.forEach(function(node) {
    dataMap[node.name] = node;
});

(我有时认为reduce更为优雅。)然后迭代地将每个子代添加到其父代,如果找不到父代,则将其添加到根数组:

// create the tree array
var tree = [];
data.forEach(function(node) {
    // find parent
    var parent = dataMap[node.parent];
    if (parent) {
        // create child array if it doesn't exist
        (parent.children || (parent.children = []))
            // add node to parent's child array
            .push(node);
    } else {
        // parent is null or missing
        tree.push(node);
    }
});

除非您的树很大,否则我认为这应该不会太昂贵,因此您应该能够在客户端进行操作(如果不能这样做,那么在任何情况下都可能有太多数据无法轻松显示) 。



 类似资料:
  • 经过一场麻烦的战斗,我几乎想出了如何将平面json文件转换为层次化的json文件。我不是自己写的函数。我从下面的帖子上抄下来的。 一个星期以来,我一直在发疯,但我自己也想不出来。有人请修改功能,以获得数据的层次格式,因为我已经更新。 提前感谢!!

  • 问题内容: 我们有这个json模式草稿。我想获取我的JSON数据的样本并为JSON模式生成一个框架,该框架可以手动进行修改,添加诸如description,required之类的内容,而这些不能从特定的示例中推断出来。 例如,从我的输入: 我将运行json_schema_g​​enerator工具,并得到: 此示例已手动编码,因此可能存在错误。有没有什么工具可以帮助我进行JSON转换-> JSON

  • 问题内容: 经过一番麻烦的战斗之后,我几乎想出了如何将平面json文件转换为Hierarchical文件。我不是自己写函数的。 但是现在的问题是,在帖子中编写的函数只有两个层次结构。但是我正在寻找4个层次的层次结构。我尝试覆盖失败的功能,但是。 用我正在尝试的代码。 当前代码的输出 ``` ``` 所需的输出格式: ``` ``` 我一个星期都在crack头,但我一个人也搞不清。有人请修改此功能,

  • 问题内容: 我想生成我的JSON数据的树状视图。因此,最好将 JSON数据 解析为 多级(!)无序HTML列表 。我找到了一些插件,但无法让它们使用我的JSON数据。 好的解决方案是调用函数并将json数据作为参数移交。结果可能是一个多级无序列表。我假设该函数必须遍历所有JSON数据并写入 ul 和 li 标签。 有没有直接的方法可以做到这一点? tia! PS:示例树(适用于我的JSOn数据):

  • 本文向大家介绍PHP生成json和xml类型接口数据格式,包括了PHP生成json和xml类型接口数据格式的使用技巧和注意事项,需要的朋友参考一下 php生成接口通信数据 以上所述就是本文的全部内容了,希望大家能够喜欢。

  • 问题内容: 我正在尝试将JSON转换为CSV文件,可用于进一步分析。我的结构存在的问题是,当我转换JSON文件时,我有很多嵌套的字典/列表。 我尝试使用pandas ,但它只会使第一级扁平化。 任何想法如何讨好整个JSON文件,以便我可以为单个(在本例中为虚拟机)条目创建到CSV文件的单行输入?我已经尝试过这里发布的几种解决方案,但是我的结果始终只是将第一级展平。 这是示例JSON(在这种情况下,