Skip to main content
🌍 Public

Share visualization

Send this visualization to others.

ANY JSON tree (DRAFT)

Public visualization

Viewing a saved revision (read-only)

e49224f0d8db4ac3b1ec216fdcb1a8f1

ANY JSON tree (DRAFT)

0 stars0🌍 Public
FFarzand-e-Ali
Last edited Mar 17, 2020
Created on Mar 17, 2020

This example displays any JSON object as an interactive, collapsible tree diagram using D3 v5’s `tree` layout and SVG rendering. It converts arbitrary JSON data into a hierarchical structure with `hierarchy()` and renders nodes as text labels showing each key, type, and value. The tree supports zooming via `d3.zoom` and toggling branches on click, allowing users to explore nested objects and arrays. The sample data includes personal records with nested objects and arrays, demonstrating how different data types are represented visually.

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.

…