#json #egui #tree #search #interactive #highlight #widgets

egui_json_tree

为egui提供的交互式JSON树可视化工具,具有搜索和突出显示功能。

7个版本 (破坏性更新)

0.6.0 2024年7月7日
0.5.1 2024年4月29日
0.5.0 2024年3月26日
0.4.0 2024年2月5日
0.1.0 2023年9月28日

#109 in GUI

Download history 92/week @ 2024-05-03 22/week @ 2024-05-10 37/week @ 2024-05-17 76/week @ 2024-05-24 248/week @ 2024-05-31 667/week @ 2024-06-07 718/week @ 2024-06-14 470/week @ 2024-06-21 539/week @ 2024-06-28 555/week @ 2024-07-05 521/week @ 2024-07-12 514/week @ 2024-07-19 498/week @ 2024-07-26 604/week @ 2024-08-02 595/week @ 2024-08-09 793/week @ 2024-08-16

2,552 每月下载量

MIT/Apache

63KB
1.5K SLoC

egui_json_tree

Latest version Documentation Build Status MIT Apache

为egui提供的交互式JSON树可视化工具,具有搜索和突出显示功能。

Search Example

使用方法

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)
    .abbreviate_root(true) // Show {...} when the root object is collapsed.
    .on_render(|ui, ctx| {
        // Customise rendering of the JsonTree, and/or handle interactions.
        match ctx {
            RenderContext::Property(ctx) => {
                ctx.render_default(ui).context_menu(|ui| {
                    // Show a context menu when right clicking
                    // an array index or object key.
                });
            }
            RenderContext::BaseValue(ctx) => {
                // Show a button after non-recursive JSON values.
                ctx.render_default(ui);
                if ui.small_button("+").clicked() {
                    // ...
                }
            }
            RenderContext::ExpandableDelimiter(ctx) => {
                // Render array brackets and object braces as normal.
                ctx.render_default(ui);
            }
        };
    })
    .show(ui);

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

请参阅demo.rs并运行示例,以了解更详细的使用情况,包括

  • 根据搜索词匹配自动展开数组/对象并突出显示。
  • 将JSON路径和值复制到剪贴板。
  • JSON编辑器界面。

支持的JSON类型

JsonTree可以可视化任何实现了value::ToJsonTreeValue的类型。

请参阅以下crate功能的表格,以查看提供的实现。

功能/依赖 JSON类型 默认
serde_json serde_json::Value
simd_json simd_json::owned::Value

如果您希望使用不同的JSON类型,请参阅value模块,并在您的Cargo.toml中禁用默认功能,如果您不需要serde_json依赖项。

运行示例

cargo run --example=demo

依赖项

~5–11MB
~116K SLoC