vs code 原生不支持 ejson 预览和加密 json 解密:ejson(如 $date、$oid)需先用 mongodb-extended-json 等工具转换为标准 json;加密 json(如 base64 密文)需在业务层用密钥解密,不可由编辑器自动处理。

VS Code 原生不支持 EJSON(Extended JSON)预览,也没有内置的加密 JSON 解析或解密能力。所谓“EJSON 预览”或“查看加密 JSON”,本质是两类完全不同的问题:一个是扩展 JSON 语法(如 MongoDB 的 $date、$oid),另一个是业务层加解密(如 AES 加密后的 base64 字符串)。强行混用会导致解析失败、视图空白或误报错误。
vscode-json 插件不支持 EJSON 解析
ZainChen 开发的 vscode-json 插件(即常被搜索到的 “JSON 插件”)只处理标准 RFC 8259 JSON。它无法识别 EJSON 特有字段,例如:
-
$date、$oid、$regex等会被当作非法键名报错(Property name expected) - 即使关闭验证,树状视图仍会把
{"$date": "2026-04-14T14:50:00.000Z"}当作普通字符串节点,不展开为日期对象 - 插件的
JsonOutlineProvider依赖JSON.parse(),而原生JSON.parse()对 EJSON 直接抛SyntaxError
想看 EJSON 内容?得先转成标准 JSON
没有“一键预览 EJSON”的魔法插件。你必须在加载前做转换——通常靠命令行工具或小脚本:
- 用
mongoimport --jsonArray或mongodump导出时加--legacy可输出兼容格式 - Node.js 场景下,用
mongodb-extended-json包解析:const { EJSON } = require('mongodb-extended-json');<br>const obj = EJSON.parse(fs.readFileSync('data.ejson', 'utf8'));<br>console.log(JSON.stringify(obj, null, 2)); - 临时查看:复制 EJSON 内容 → 粘贴进浏览器控制台 → 手动执行
EJSON.parse(...)(需先引入库)
所谓“加密 JSON”根本不是 JSON
如果文件内容是 {"data":"U2FsdGVkX1+..."} 这类 base64 字符串,它只是 JSON 格式外壳,里面是密文。VS Code 插件不会、也不能自动解密——那需要密钥和明确的算法(AES-256-CBC?RSA-OAEP?)。
- 直接用
vscode-json打开,只会显示一个长字符串字段,树状视图毫无意义 - 若强行写个插件自动解密,等于把密钥硬编码进前端,严重违反安全原则
- 正确做法是:在调试阶段用 Node.js 脚本或 Postman 配合解密逻辑,把明文 JSON 输出后再打开
真正容易被忽略的是:EJSON 和加密 JSON 的混淆,会让开发者浪费大量时间找“支持它的插件”。其实问题不在编辑器,而在数据形态本身——它已经超出了 JSON 工具链的职责边界。











