DSH Java Native Plugin 独立 AI 产品系列 #15。JSON 手术台:超大 JSON 浏览、JSONPath 提取、结构推断、两份 JSON 深度比对、展平浏览。
独立 AI 产品:整个应用就是 JSON 工作台。AI 与右侧工作台共享同一套工具能力,可统计/提取/推断/比对/展平任意 JSON。
| 能力 | 说明 |
|---|---|
| 结构统计 | 根类型/节点数/最大深度/键总数/数组数与元素总数/类型分布/最长路径 |
| JSONPath 提取 | $.a.b[0] 取字段下标、$..key 递归找全部同名键、$.items[*] 通配 |
| Schema 推断 | 每层类型/属性/数组元素类型并集(union)/标量样本值 |
| 深度比对 | 新增/删除/修改的完整路径清单(含旧值新值),100 条截断 |
| 展平 | path→值 标量行($.users[0].name=lee),便于表格浏览 |
工具前缀:plugin__dsh-java-json-plugin__json_
json_parse_stats(json)— 结构统计json_query_path(json, path)— JSONPath 提取json_infer_schema(json)— Schema 推断json_deep_diff(jsonA, jsonB)— 深度比对json_flatten_sample(json)— 展平
- 纯内存分析,不持久化、不外发用户数据(PRE_TOOL_USE hook 注入审计提示)。
- 用户没贴 JSON 时 AI 先索要数据,禁止臆造样例(T7 验证)。
- 回答中不复述大段原始 JSON(超过 20 行就摘要)。
dsh-java-json/
├── dsh-java-json-app/ # Spring Boot 应用 (port 8101)
│ ├── controller/ # REST: /api/json/* + /api/assistant/stream (SSE)
│ ├── service/ # JsonSurgeonService(Jackson 树模型全实现)
│ └── static/ # 前端(统计/提取/Schema/展平 四工作台 + AI 对话)
└── dsh-java-json-plugin/ # Java Native Plugin(5 个 json_* 工具)
mvn package -DskipTests
SERVER__PORT= java -jar dsh-java-json-app/target/dsh-java-json-app-0.1.0-SNAPSHOT.jar --server.port=8101
cp dsh-java-json-plugin/target/dsh-java-json-plugin-0.1.0-SNAPSHOT.jar ~/.dsh/standalone/plugins/dsh-java-json-plugin.jar
curl -X POST http://127.0.0.1:8090/api/harness/plugins/install -H 'Content-Type: application/json' \
-d '{"pluginId":"dsh-java-json-plugin","jarName":"dsh-java-json-plugin.jar","displayName":"DSH JSON Surgeon Plugin","pluginVersion":"0.1.0","runtimeType":"JAVA_NATIVE","sourcePath":"'"$HOME"'/.dsh/standalone/plugins/dsh-java-json-plugin.jar","entrypoint":"cn.xiaofuge.dsh.json.plugin.DshJsonSurgeonPlugin","installMode":"REPLACE"}'
curl -X POST http://127.0.0.1:8090/api/harness/plugins/activate -H 'Content-Type: application/json' \
-d '{"pluginId":"dsh-java-json-plugin"}'
python3 json_surgeon_e2e.py # 8/8 PASS- T0 统计:rootType/节点数/深度/类型分布
- T1 提取:下标
$.users[0].name/ 递归$..id/ 通配$.users[*].name - T2 Schema:root object + users 元素类型并集
- T3 深度比对:added=2 / removed=1 / modified=3 + version 路径命中
- T4 展平:
$.app=demo+ 数组路径 - T5 非法 JSON/非法 path 双 400
- T6 AI 走 SSE 调用
json_parse_stats/json_query_path - T7 安全红线:AI 未拿到数据时先索要,不臆造
screenshots/01-home.png— 主界面(统计工作台)screenshots/02-ai-drawer.png— AI 分析 JSON 结构(节点数/深度/类型分布表)screenshots/03-safety.png— 深度比对:3 处差异(新增/修改逐条路径+新旧值)