确认粘贴的是数据文本
文档、数组或单个标量都可以输入。ObjectId() 和 ISODate() 是 Shell 表达式,需先导出为带 $oid、$date 的严格 JSON。
- 示例和清空会先显示替换预览;应用后可以一次撤销,连同输出一起恢复。
数据库与 SQL
粘贴严格 EJSON,切换标准或宽松表示,检查保真提示后导出。
文本仅在当前浏览器处理,不连接数据库、不上传文档。
仅接受一个严格 JSON 值;拒绝 Shell 表达式、注释和重复键。
裸整数按范围推断为 Int32 或 Int64,小数或指数形式推断为 Double;普通字符串不猜类型。
上限:输入 500,000 个 UTF-16 单元,深度 100 层,50,000 个节点,输出 2,000,000 个字符。
输入或参数已改变,请转换后再导出。
MongoDB 扩展 JSON 常见于数据库导出和接口调试。文档里的 $oid、$date 或 $numberDecimal 不是多余装饰,直接删掉它们,会改变接收方能够还原的数据类型。
先用示例比较两种输出。特意放入的大整数能帮助你区分“数字没有少一位”和“原来的 BSON 类型仍然存在”。转换时原输入始终保留,方便检查日期、金额与标识符。
先检查表示方式,再把文档交给下一个系统。
MongoDB 扩展 JSON 默认选择 Canonical EJSON。切换 Relaxed EJSON 后,有限数值和适用日期变得简洁,ObjectId 与 Decimal128 仍保留包装。你可以同时对照原文与结果,不必猜测哪些字段发生了变化。
9007199254740993 这样的 Long 从精确整数直接写出,不经普通 Number 中转。宽松结果中的数字仍然完整,但接收方若使用 JavaScript 默认解析器,仍可能舍入;保真提示会说明这个区别。
文档、数组或单个标量都可以输入。ObjectId() 和 ISODate() 是 Shell 表达式,需先导出为带 $oid、$date 的严格 JSON。
标准模式适合保留明确的数值类型,宽松模式适合阅读。不要只看结果是否更短,要确认 Decimal128、日期和大整数符合下一步使用方式。
自动转换在最后一次修改后等待 350 毫秒;关闭开关会取消待执行任务并显示转换按钮。手动模式也支持 Ctrl/Cmd + Enter。
EJSON 转换覆盖 ObjectId、Decimal128、Int32、Int64、Double、日期、Binary、UUID、正则、Timestamp 和 MinKey/MaxKey。UUID 规范化为子类型 04 的二进制包装,正则选项按字母顺序输出,不执行正则匹配。
标准模式保留有符号 64 位毫秒字符串,包括 JavaScript Date 无法表示的极值。宽松模式仅对 1970 至 9999 年范围输出 UTC 日期字符串,其余日期继续保留毫秒包装,不改成当前时间,也不截断年份。
不带包装的整数按范围推断为 Int32 或 Int64,小数和指数形式按 Double 处理。Double 遵循二进制 64 位精度,过长十进制写法可能舍入;看起来像日期或标识符的普通字符串不会被自动识别成其他类型。
Canonical 优先保存 BSON 类型信息,因此数值也有包装。Relaxed 将有限数值和适用日期写得更容易阅读。两者都是合法 JSON 文本,但 ObjectId、Decimal128 等类型在两种模式中都会保留标签。
只有输出本身是严格 JSON/EJSON 时可以。ObjectId("…")、ISODate("…")、NumberLong("…") 都是表达式,会被拒绝。请先用扩展格式导出或序列化文档;本工具不会执行粘贴的代码,也不会用正则猜测并替换它。
标准格式通过字符串形式的 $numberLong 保存每一位数字,防止普通解析器提前舍入。本工具的宽松模式会写出完整整数,而不是给它加引号;但接收方要用支持精确整数的解析方式,尤其是超过安全范围的值。
常见 JavaScript Number 使用二进制 64 位,精度与 Decimal128 不同。$numberDecimal 的字符串同时保存十进制表示和类型,因此在宽松模式中也保留。金额等要求十进制精度的数据不应随意去掉这层包装。
可以处理限制内的单个 JSON 值,例如文档数组。默认按行导出的多个文档属于 JSONL,不会被当作一个值接受。请转换单条文档,或者使用合适的导出选项先生成数组;这里没有文件上传或流式处理入口。
发现解析边界问题?