I want to transform json data like packageJson into a hierarchical format suitable for a tree graph
using d3.hierarchy to transform the Object
as I understood
every property which contains nested data
needs to be transformed using a helper function inside like
const test = d3.hierarchy(packageJson, d => d.scripts);
is the only way to transform packageJson by finding every property with a nested object
or are any d3 helper function which Im unaware of for this kinda task ?
const fam = d3.hierarchy({
name: "root",
children: [
{name: "child #1"},
{
name: "child #2",
children: [
{name: "grandchild #1"},
{name: "grandchild #2"},
{name: "grandchild #3"}
]
}
]
})
// transform json
const packageJson = {
"name": "visualize-data",
"version": "0.1.0",
"private": true,
"scripts": {
"serve": "vue-cli-service serve",
"build": "vue-cli-service build",
"lint": "vue-cli-service lint"
},
"dependencies": {
"core-js": "^3.6.5",
"d3-color": "^3.0.1",
"d3-hierarchy": "^3.0.1",
"d3-selection": "^3.0.0",
"d3-shape": "^3.0.1",
"vue": "^3.0.0"
},
"devDependencies": {
"@vue/cli-plugin-babel": "~4.5.0",
"@vue/cli-plugin-eslint": "~4.5.0",
"@vue/cli-service": "~4.5.0",
"@vue/compiler-sfc": "^3.0.0",
"babel-eslint": "^10.1.0",
"eslint": "^6.7.2",
"eslint-plugin-vue": "^7.0.0"
},
"eslintConfig": {
"root": true,
"env": {
"node": true
},
"extends": [
"plugin:vue/vue3-essential",
"eslint:recommended"
],
"parserOptions": {
"parser": "babel-eslint"
},
"rules": {}
},
"browserslist": [
"> 1%",
"last 2 versions",
"not dead"
]
}
const test = d3.hierarchy(packageJson, d => d.scripts);
console.log(test)
#limit {
max-width: 100px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/5.7.0/d3.min.js"></script>
<div id="limit">
</div>