D3 JSON data conversion

前端 未结 5 1607
一生所求
一生所求 2020-12-01 07:10

I have this JSON data structure:

[
    { \"dep\": \"d1\", \"name\": \"name1\", \"size\": \"size1\" },
    { \"dep\": \"d1\", \"name\": \"name2\", \"size\": \         


        
5条回答
  •  既然无缘
    2020-12-01 07:42

    Use this. U can check the output in the console of the browser if u need.

    function reSortRoot(root, value_key) {
                    //console.log("Calling");
                    for ( var key in root) {
                        if (key == "key") {
                            root.name = root.key;
                            delete root.key;
                        }
                        if (key == "values") {
                            root.children = [];
                            for (item in root.values) {
                                root.children.push(reSortRoot(root.values[item],
                                        value_key));
                            }
                            delete root.values;
                        }
                        if (key == value_key) {
                            root.value = parseFloat("1");
                            delete root[value_key];
                        }
                    }
                    return root;
                } 
    
                var testdata=[
                              { "dep": "d1", "name": "name1", "size": "size1" },
                              { "dep": "d1", "name": "name2", "size": "size2" },
                              { "dep": "d2", "name": "name1", "size": "size3" },
                              { "dep": "d2", "name": "name1", "size": "size4" }
                          ];
    
                var testJson = d3.nest()
                .key(function(d)  { return d.dep; })
                .entries(testdata); 
                 console.log(testJson);
    
                var testRoot={};
                testRoot.key = "Information";
                testRoot.values = testJson;
                testRoot = reSortRoot(testRoot, "name");
    
                 console.log(testRoot);
    

提交回复
热议问题