#egui #json #tree #search #interactive #highlight #json-response

egui_json_tree

An interactive JSON tree visualiser for egui, with search and highlight functionality

5 releases (breaking)

0.5.0 Mar 26, 2024
0.4.0 Feb 5, 2024
0.3.0 Jan 8, 2024
0.2.0 Nov 23, 2023
0.1.0 Sep 28, 2023

#188 in GUI

Download history 16/week @ 2024-01-02 21/week @ 2024-01-09 107/week @ 2024-01-16 224/week @ 2024-01-23 341/week @ 2024-01-30 132/week @ 2024-02-06 74/week @ 2024-02-13 68/week @ 2024-02-20 62/week @ 2024-02-27 88/week @ 2024-03-05 77/week @ 2024-03-12 110/week @ 2024-03-19 171/week @ 2024-03-26 75/week @ 2024-04-02 17/week @ 2024-04-09 11/week @ 2024-04-16

289 downloads per month

MIT/Apache

40KB
870 lines

egui_json_tree

Latest version Documentation Build Status MIT Apache

An interactive JSON tree visualiser for egui, with search and highlight functionality.

Search Example

Usage

use egui::{Color32};
use egui_json_tree::{DefaultExpand, JsonTree, JsonTreeStyle};

let value = serde_json::json!({ "foo": "bar", "fizz": [1, 2, 3]});

// Simple:
JsonTree::new("simple-tree", &value).show(ui);

// Customised:
let response = JsonTree::new("customised-tree", &value)
    .style(JsonTreeStyle {
        bool_color: Color32::YELLOW,
        ..Default::default()
    })
    .default_expand(DefaultExpand::All)
    .response_callback(|response, json_pointer_string| {
      // Handle interactions within the JsonTree.
    })
    .abbreviate_root(true) // Show {...} when the root object is collapsed.
    .show(ui);

// Reset the expanded state of all arrays/objects to respect the `default_expand` setting.
response.reset_expanded(ui);

See demo.rs and run the examples for more detailed use cases, including the search match highlight/auto expand functionality, and how to copy JSON paths and values to the clipboard.

JsonTree can visualise any type that implements value::ToJsonTreeValue. An implementation to support serde_json::Value is provided with this crate. If you wish to use a different JSON type, see the value module, and disable default features in your Cargo.toml if you do not need the serde_json dependency.

Run Examples

cargo run --example=demo

Dependencies

~5–10MB
~92K SLoC