JSON 是开发者日常接触最多的数据格式之一,但手工编写和校验 JSON 文件往往是一件繁琐的事。特别是面对复杂的嵌套结构或严格的 Schema 约束时,纯文本编辑器的体验显得捉襟见肘。

visual-json 是 Vercel Labs 团队最近开源的一款可视化 JSON 编辑器,提供了树形视图、表单视图和差异对比等功能,并且原生支持 JSON Schema 校验。

项目概览

属性内容
GitHubvercel-labs/visual-json
Stars843
语言TypeScript
许可证Apache 2.0
最后更新1 周前

核心特点

Schema-Aware 编辑

visual-json 最大的卖点是对 JSON Schema 的原生支持。你可以在编辑器中定义 Schema,系统会自动根据 Schema 提供:

  • 属性自动补全
  • 类型检查提示
  • 必填字段标记
  • 枚举值下拉选择

这对于需要处理配置文件的开发者来说非常实用。比如在编辑 package.json 或复杂的 API 请求体时,Schema 可以显著降低出错概率。

多框架组件库

项目采用 monorepo 架构,提供了多个框架的 UI 组件:

包名说明
@visual-json/core无头核心,包含树模型和 Schema 类型
@visual-json/reactReact 组件(TreeView、FormView、DiffView)
@visual-json/svelteSvelte 5 组件
@visual-json/vueVue 组件
@visual-json/yamlYAML 支持

这种设计让开发者可以根据技术栈选择合适的集成方式,而不必被锁定在特定框架。

VS Code 扩展

除了 Web 组件,visual-json 还提供了 VS Code 扩展,支持:

  • JSON 和 JSONC(带注释的 JSON)文件的可视化编辑
  • YAML 文件支持
  • 侧边栏树形导航
  • Schema 关联

安装扩展后,右键点击 JSON 文件选择 “Open with Visual JSON Editor” 即可使用。

快速开始

以 React 项目为例:

npm install @visual-json/react
import { TreeView } from '@visual-json/react';

function App() {
  const schema = {
    type: 'object',
    properties: {
      name: { type: 'string' },
      version: { type: 'string' },
      dependencies: { type: 'object' }
    }
  };

  return (
    <TreeView
      schema={schema}
      value={{
        name: 'my-app',
        version: '1.0.0',
        dependencies: {}
      }}
      onChange={(value) => console.log(value)}
    />
  );
}

适用场景

visual-json 最适合以下情况:

  1. 配置管理工具 — 需要让用户可视化编辑 JSON 配置的后台系统
  2. API 调试界面 — 构建请求体编辑器时提供结构化的输入体验
  3. 数据预览组件 — 展示复杂 JSON 数据的可折叠树形视图
  4. 低代码平台 — 表单生成和数据绑定的可视化编辑器

与同类工具对比

工具Stars特点适用场景
react-json-editor-ajrm1.2k纯 React,语法高亮轻量级编辑
jsoneditor12.3k功能完整,支持模态框编辑独立编辑器
visual-json843多框架支持,Schema 优先,可嵌入集成到应用

相比 jsoneditor 这种全功能编辑器,visual-json 更强调可嵌入性框架集成。如果你正在构建需要 JSON 编辑功能的内部工具或 SaaS 产品,它会是一个比直接使用大型编辑器更轻量、更灵活的选择。

注意事项

  • 项目仍处于早期阶段(v0.x),API 可能会有变动
  • 文档还在完善中,部分高级用法需要参考源码
  • Svelte 和 Vue 组件相对 React 组件的测试覆盖较少

总结

visual-json 填补了 JSON 编辑器领域的一个空白:既不像简单的高亮组件那样功能贫乏,也不像大型独立编辑器那样难以集成。它提供的多框架组件和 Schema 支持,使其成为构建数据密集型应用的实用基础设施。

对于需要内嵌 JSON 编辑功能的开发者来说,这个项目值得关注。

文章发表于 gumi.ink