WebberUI

JSON 樹檢視器

可收合的 JSON 樹:型別配色、路徑複製、展開動畫。

以等寬字型遞迴渲染任何 JSON 資料:字串綠、數字藍、布林橘、null 紅,物件與陣列可展開收合(高度動畫加箭頭旋轉,並顯示項數摘要),滑過任一列即可一鍵複製該節點的路徑或值,適合 API 除錯面板與開發者工具。

載入預覽⋯

Playground

即時調整 props、程式碼片段同步更新——直接試出你要的樣子再複製。

2
<JsonTreeViewer />

安裝

npx shadcn@latest add https://webberui.com/r/json-tree-viewer.json

或在 components.json 設定 registries 後,改用 @webberui/json-tree-viewer 安裝。

安裝依賴後,從 registry JSON(/r/json-tree-viewer.jsonfiles[0].content)複製 json-tree-viewer.tsx 原始碼到你的 components/ui/ 目錄:

npm install motion lucide-react clsx tailwind-merge

使用

import { JsonTreeViewer } from "@/components/ui/json-tree-viewer";

<JsonTreeViewer
  data={{ name: "Webber", stars: 1024, tags: ["ui", "react"], beta: false }}
  defaultExpandDepth={2}
  rootName="$"
/>

Props

Prop型別預設值說明
dataJsonValue要渲染的 JSON 資料(物件、陣列或任何原始值)
defaultExpandDepthnumber2預設展開的層數,0 全部收合、Infinity 全部展開
rootNamestring"$"複製路徑時的根名稱,例如 $data
classNamestring透傳到最外層容器,與內建樣式合併

可及性

  • 展開/收合為原生 button,附 aria-expanded 與含節點路徑的中文 aria-label,鍵盤 Enter 與 Space 皆可操作
  • 「複製路徑/複製值」按鈕在鍵盤聚焦(focus-visible)時同樣會顯現,不依賴滑鼠 hover
  • 複製成功以圖示切換為打勾提供視覺回饋,且按鈕保持可見 1.4 秒
  • 使用者系統開啟「減少動態效果」時,展開收合與箭頭旋轉改為即時切換,不播放高度動畫

On this page