Skip to content

feat: JSON 查看器——配置文档从一坨 pre 变成能翻的树 - #100

Merged
YoungSx merged 1 commit into
mainfrom
json-viewer-smoke
Sep 6, 2026
Merged

feat: JSON 查看器——配置文档从一坨 pre 变成能翻的树#100
YoungSx merged 1 commit into
mainfrom
json-viewer-smoke

Conversation

@YoungSx

@YoungSx YoungSx commented Sep 6, 2026

Copy link
Copy Markdown
Owner

改了什么

发布预览与审计详情两处原来把 JSON.stringify 的原文塞进 <pre>:结构靠眼睛缩进,长文档滚不到底,想拿原文还得手选全文。新增 JsonViewer 折叠树接住这两处:

  • 折叠看结构——收起的分支摘牌「N 个键 / N 项」;默认展开到第二层,深层收着,日常核对只碰顶层
  • 展开看内容——guide line 标层级归属;键浅值深的灰阶着色,数字布尔 tabular-nums 退半层,null 斜体
  • 复制拿原文——反代热路径逐字符核对仍有全文可抄,成功/失败走 toast
  • 深层存在时给「全部展开 / 收起全部」;空容器与根标量不装成可折叠的

为什么这么做

  • 灰阶:DESIGN.md 禁第二个色相;全部颜色绑 CSS 变量,明暗主题自动成立(两主题截图均实测)
  • 审计 detail 的回退分支:detail 万一不是 JSON(老数据、手写坏行),原样 <pre> 摆出来——不为好看吞内容
  • 状态放根上:展开状态整树只存一个 Set<pathKey>,节点无状态递归——否则「全部展开/收起」要广播到每个节点打架
  • pathKey 用 JSON.stringify(path):对象键可以含任意字符,字符串拼接会撞车

验证

  • 6 个组件测试(默认展开深度、摘牌、点击展开、全部展开/收起、数组项牌、aria-expanded、剪贴板),npm run check 全绿
  • Playwright smoke(拦 /api/* 喂 mock,产品代码零改动)五张截图实测:浅色/深色主题、发布预览树折叠+全展开、审计 JSON 树、审计纯文本回退

🤖 Generated with Claude Code

发布预览与审计详情两处原来把 JSON.stringify 的原文塞进 <pre>:
结构要靠眼睛缩进,长文档滚不到底,想拿原文还得手选全文。

JsonViewer 折叠树三步接住:折叠看结构(收起的分支摘牌「N 个键/项」)、
展开看内容(guide line 标层级归属)、复制拿原文(反代热路径逐字符
核对仍有全文可抄)。默认展开到第二层,深层收着——日常核对只碰顶层,
需要下钻的再点开。

配色只用灰阶(DESIGN.md 禁第二个色相):键浅值深,数字布尔退半层
tabular-nums,null 斜体;全部绑 CSS 变量,明暗主题自动成立。审计
detail 万一不是 JSON(老数据、手写坏行),回退原样 <pre>——不为
好看吞内容。展开状态整树只存根上一个 Set,节点无状态递归。

Co-Authored-By: Claude <noreply@anthropic.com>
@YoungSx
YoungSx merged commit d10c870 into main Sep 6, 2026
1 check passed
@YoungSx
YoungSx deleted the json-viewer-smoke branch September 6, 2026 18:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant