Skip to main content
100%

ANY JSON tree (DRAFT)

✓ Published1🌍 Public
Aahsna
Last edited Mar 10, 2020
Created on Mar 10, 2020

This example displays any JavaScript object or array as an interactive tree diagram, with nodes labeled by key names, data types (object, array, string, number), and values. It converts flat or nested JSON data into a hierarchical structure using a custom `hierarchify` function, then renders it with D3’s `tree` layout and `linkHorizontal` paths in SVG. Users can zoom and pan the tree via `d3.zoom`, and clicking a node toggles its children, allowing exploration of arbitrarily nested data. The code imports D3 v5 modules and includes a sample dataset with nested objects and arrays.

AI-generated description

Aim: Display ANY JSON as a selectable tree.

The idea is to be able to use d3 as a JSON-explorer / picker.

Version 1.0 using the code from World Countries Tree from Curran

Other Possible GUIs

https://bl.ocks.org/swayvil/b86f8d4941bdfcbfff8f69619cd2f460

Probably the d3.tree is what we want to use ...

1. Restructure the data into hierarchical JSON format

The JSON format expected by a d3 tree

See function hierarchify in

https://observablehq.com/@d3/collapsible-tree

Alternative ideas:

var input = [
    { "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 output = {
  "name": "root",
  "children": d3.groups(input, d => d.dep).map(([k, vs]) => ({ "name": k, "children": vs }))
};

2. Present the hierarchical JSON as a tree

3. Make the hierarchie interactive

…

4. Clicking a node should return the JSONPath to that node.

…

MIT Licensed

Similar vizzes