Owen-Dechow/nvim_json_graph_view

github github
utility
stars 56
issues 2
subscribers 2
forks 0
CREATED

UPDATED


๐Ÿ“Š nvim_json_graph_view

Many editors have the option to view JSON files as a graph. Neovim, with a terminal interface, does not have this luxury. While one can't create an interface like JSON Crack, it is possible to build a similar JSON explorer using Neovim's terminal interface.

Json Graph View Preview

โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ•ฎโ•ญโ”€โ”€โ”ฌโ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎโ•ญโ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚     JsonGraphViewโ”‚[]โ”œโ•ฏ  โ”‚ 1โ”‚ฮ‡ฮ‡ฮ‡ฮ‡ฮ‡ฮ‡ฮ‡ฮ‡ฮ‡ฮ‡"This is a great plugin"โ”‚โ”‚  โ”‚  userโ”‚ฮ‡"will try"โ”‚
โ”‚           Exampleโ”‚{}โ”œโ•ฎ  โ”‚ 2โ”‚ฮ‡ฮ‡ฮ‡ฮ‡ฮ‡ฮ‡ฮ‡ฮ‡ฮ‡ฮ‡ฮ‡ฮ‡ฮ‡"Look at this number"โ”‚โ”‚  โ”‚isTrueโ”‚"100% True"โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ•ฏโ”‚  โ”‚ 3โ”‚ฮ‡ฮ‡ฮ‡ฮ‡ฮ‡ฮ‡ฮ‡ฮ‡ฮ‡ฮ‡ฮ‡ฮ‡ฮ‡ฮ‡ฮ‡ฮ‡ฮ‡ฮ‡ฮ‡ฮ‡ฮ‡ฮ‡ฮ‡ฮ‡ฮ‡ฮ‡ฮ‡ฮ‡ฮ‡ฮ‡3467โ”‚โ”‚  โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ
                       โ”‚  โ”‚ 4โ”‚ฮ‡ฮ‡ฮ‡ฮ‡ฮ‡ฮ‡ฮ‡ฮ‡ฮ‡ฮ‡ฮ‡ฮ‡ฮ‡ฮ‡ฮ‡ฮ‡ฮ‡ฮ‡ฮ‡ฮ‡ฮ‡ฮ‡ฮ‡ฮ‡ฮ‡ฮ‡ฮ‡ฮ‡ฮ‡ฮ‡nullโ”‚โ”‚
                       โ”‚  โ”‚ 5โ”‚ฮ‡ฮ‡ฮ‡"The Next lines will be hidden"โ”‚โ”‚
                       โ”‚  โ•ช.....................................โ”‚โ”‚
                       โ”‚  โ•ฐโ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏโ”‚
                       โ•ฐโ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎโ”‚
                          โ”‚ empty_arrayโ”‚ฮ‡ฮ‡ฮ‡ฮ‡ฮ‡ฮ‡ฮ‡ฮ‡ฮ‡ฮ‡ฮ‡ฮ‡ฮ‡ฮ‡ฮ‡ฮ‡ฮ‡ฮ‡ฮ‡ฮ‡ฮ‡ฮ‡[]โ”‚โ”‚
                          โ”‚ empty_tableโ”‚ฮ‡ฮ‡ฮ‡ฮ‡ฮ‡ฮ‡ฮ‡ฮ‡ฮ‡ฮ‡ฮ‡ฮ‡ฮ‡ฮ‡ฮ‡ฮ‡ฮ‡ฮ‡ฮ‡ฮ‡ฮ‡ฮ‡{}โ”‚โ”‚
                          โ”‚        testโ”‚"This is some test data"โ”œโ•ฏ
                          โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ

[!NOTE] This plugin is still under development. Breaking changes will be avoided unless deemed necessary.

๐Ÿ› ๏ธ Features

  • Algorithmic Graph Rendering
  • Collapsible Units
  • Jumping Between Linked Units
  • Set Any Unit as Root
  • Customizable Styles

โš™๏ธ Setup

lazy.nvim (Suggested Setup)

return {
    "Owen-Dechow/nvim_json_graph_view",
    opts = {
        round_units = false
    }
}

๐Ÿงฉ Options

{
    -- set the window editor type
    editor_type = "split", -- split, floating

    -- configure the floating window style
    floating_editor_style = {
        margin = 2,
        border = "double",
        zindex = 10
    },

    -- Allow opening non .json files
    accept_all_files = false,

    -- Number of lines before collapsing
    max_lines = 5,

    -- Set the unit style to round
    round_units = true,

    -- Set the connection style to round
    round_connections = true,

    -- Disable line wrapping for the graph buffer
    disable_line_wrap = true,

    -- Set the priority of keymaps for the quick
    --   action keymap.
    keymap_priorities = {
        expand = 4,
        collapse = 2,
        link_forward = 3,
        link_backward = 3,
        set_as_root = 1,
    },

    -- Set the keys actions will be mapped to
    keymaps = {
        -- Expanding collapsed areas
        expand = "E",

        -- Collapse expanded areas
        collapse = "E",

        -- Jump to linked unit
        link_forward = "L",

        -- Jump back to unit parent
        link_backward = "B",

        -- Set current unit as root
        set_as_root = "R",

        -- Aliased to first priority available keymap
        quick_action = "<CR>",

        -- Close the window
        close_window = "q"
    }
}

๐Ÿš€ Running

To open a graph view, go to a json file and run :JsonGraphView. The JsonGraphView window will open in a plit window to the right. The JsonGraphView buffer will have a filetype of JsonGraphView.

๐ŸŽฏ Future Goals

[!NOTE] These goals are long term and will only be started after this plugin is deemed stable and there is enough support. They will be developed in separate branches.

๐Ÿ“š Multiple Filetype Support

Add support for different filetypes such as TAML and TOML.

(Issue: YAML Support #4)

โœ๏ธ File Editing

Add support for file editing directly form JsonGraphView.

(Issue: File Editing #5)

๐Ÿ“„ License

This software is licensed under the MIT Standard License (Copyright (c) 2025 Owen Dechow).

๐Ÿค Contributions

Contributions to this software are greatly appreciated. Please read CONTRIBUTING.md for further guidelines.