1

我正在使用一个AJAX查询Fuseki,我想在D3.js 可折叠树中进行可视化。然而,Fuseki以代码无法识别JSON的格式返回。D3.js像这样:

{
  "head": {
    "vars": [ "s" ]
  } ,
  "results": {
    "bindings": [
      {

        "s": {

           "type": "uri",

           "value": "http://www.co-ode.org/ontologies/pizza/2005/05/16/pizza.owl#FourCheesesTopping"

        },

        "p": {

           "type": "uri",

           "value": "http://www.w3.org/2000/01/rdf-schema#subClassOf"

        },

        "o": {

           "type": "uri",

           "value": "http://www.co-ode.org/ontologies/pizza/2005/05/16/pizza.owl#CheeseTopping"

        }
    ]
  }
}

我需要将此 JSON 转换为这种格式:{

        "name": "Pizza",
        "children": [
            {
                "name": "http://www.co-ode.org/ontologies/pizza/2005/05/16/pizza.owl#PizzaBase",
                "children": [
                ]
            },
            {
               "name": "http://www.co-ode.org/ontologies/pizza/2005/05/16/pizza.owl#PizzaTopping",
                "children": [
                    {
                        "name": "http://www.co-ode.org/ontologies/pizza/2005/05/16/pizza.owl#MeatTopping",
                        "children": [
                            {
                                "name": "http://www.co-ode.org/ontologies/pizza/2005/05/16/pizza.owl#HotSpicedBeefTopping"
                            }
                        ]
                    }
                ]
            }
        ]
}

我尝试将 JSON 放入具有正确格式的新对象中,但它不起作用。这是我的代码:

            var parent = new Object();
    var childArray=[];
    var child =  [];


        function createChildObj(_children, children, depth, id, childName, parent, x, x0, y, y0){
            var childObj = new Object();
                childObj._children = _children;
                childObj.children = children;
                childObj.depth = depth;
                childObj.id =id;

                childObj.name = childName;
                childObj.parent= parent;
                childObj.x = x;
                childObj.x0 = x0;
                childObj.y = y;
                childObj.y0 = y0;   
            return childObj;

            };
            console.log(root.length)
        for (var i=0; i<root.length; i++){
            var childName = root[i]["s"]["value"];
            var childObj =  createChildObj("children",null, 1, 2, childName, parent, 190, 190, 180, 180);
            child.push(childObj);           
        }
        parent.name = "Pizza";
        parent.depth = 0;
        parent.id = 3;
        parent.children= child;
        parent.x0 = root.x0;
        parent.x = parent.x0;
        parent.y0 = root.y0;
        parent.y = parent.y0;

因此,我的目标是parent将数据作为 JSON 对象以正确的格式解析为d3. 对不起,它一团糟,多年来一直在努力学习 D3,而且学习曲线比我预期的要陡峭。任何帮助都会很棒!干杯。

4

0 回答 0