紧凑JSON
一个面向 JSON 和 JSONC 文件的 VS Code 扩展,支持对当前选中的数组做“折叠排版”或“展开排版”,并提供辅助树视图。
适用场景:
- 需要把很长的对象数组压成每个元素一行
- 需要把已经压紧的数组重新展开成多行格式
- 需要用鼠标选中某个数组后,直接完成排版切换
- 配置文件里字段很多,希望快速定位到对应 JSON 节点
功能
- 支持用鼠标把光标点到某个数组内,或直接框选该数组
- 执行“折叠当前数组”后,如果是对象数组,会改成每个对象一行;如果是普通元素数组,会直接压成单行数组
- 执行“展开当前数组”后,会把数组改成标准多行缩进样式
- 保留资源管理器侧边栏
紧凑JSON 视图,用于辅助查看 JSON 结构
- 点击树节点可跳转到原始 JSON 中对应的位置
- 提供命令
紧凑JSON: 刷新视图
- 提供命令
紧凑JSON: 折叠当前数组
- 提供命令
紧凑JSON: 展开当前数组
支持格式
例如下面这种结构:
{
"devlist": {
"body": [
{
"devNo": "1",
"port": "0"
},
{
"devNo": "2",
"port": "0"
}
]
}
}
选中 body 数组后执行“折叠当前数组”,会被整理成近似这样的样式:
{
"devlist": {
"body": [
{"devNo": "1","port": "0"},
{"devNo": "2","port": "0"}
]
}
}
再执行“展开当前数组”,则会恢复为标准多行缩进格式。
使用方法
- 在 VS Code 中打开扩展目录。
- 执行
npm install。
- 执行
npm run compile。
- 按
F5 启动扩展开发宿主。
- 在新的 VS Code 窗口中打开任意 JSON 或 JSONC 文件。
- 用鼠标点中某个数组内部,或者直接框选该数组文本。
- 在编辑器中右键执行
紧凑JSON: 折叠当前数组,或者从命令面板执行同名命令。
- 如需恢复为标准多行格式,执行
紧凑JSON: 展开当前数组。
- 如需查看结构,可在资源管理器中打开
紧凑JSON 视图,并使用 紧凑JSON: 刷新视图。
公开发布到 VS Code Marketplace
当前工程已经包含 vsce,可直接用于打包和发布。
发布前准备
- 在 Visual Studio Marketplace 创建发布者,发布者标识必须与
package.json 中的 publisher 一致。
- 在 Azure DevOps 创建一个 Personal Access Token,授予 Marketplace 发布相关权限。
- 如需公开展示源码,请在发布前把
package.json 中的 repository、homepage、bugs 等字段改成外网可访问地址;如果暂时没有公开仓库,可以先不填写。
本地校验
npm install
npm run compile
npm run package
执行完成后,会在项目根目录生成 .vsix 文件。
发布命令
npx vsce login fanchizhou77xu
npm run publish:vsce
首次执行 vsce login 时,按提示粘贴上一步创建的 PAT 即可。
仅安装到远程或云主机上的 VS Code
如果你的目标不是公开上架,而只是安装到远程开发环境、VS Code Server、Remote SSH 或 Codespaces,可以直接使用生成好的 .vsix 文件,在扩展面板中选择“Install from VSIX”安装。
目录
src/extension.ts:扩展主逻辑
package.json:命令与扩展清单
tsconfig.json:TypeScript 编译配置
当前实现说明
当前版本基于 JSON 语法树定位选中的数组,并执行原地文本排版:
- 任意 JSON 数组都可以作为折叠或展开目标
- 根据当前光标或选区命中最内层数组
- 折叠会把数组改成每个元素一行的紧凑格式
- 如果数组元素不是对象,而是字符串、数字、布尔值或 null,则折叠结果会直接压成单行数组
- 展开会把数组改成标准 JSON 多行缩进格式
- 保留一个辅助树视图,用于查看当前 JSON 结构和跳转节点
- 支持 JSONC 注释和尾逗号
- 更适合处理设备清单、参数表、测点表这类“数组里都是同结构对象”的配置文件