协议与二进制序列化

BSON 查看器

检查单个 BSON 文档的字段类型、位置与顺序,或把一个扩展 JSON 对象编码为新文件。

BSON 查看器

BSON 字节或扩展 JSON

结果

输入仅在当前浏览器处理;不会连接数据库或上传文件。

选项

EJSON 固定使用 2 空格缩进;输入只在手动执行时处理。

请选择 BSON 字节或输入扩展 JSON 对象。

拿到 mongodump 产生的二进制片段时,BSON 查看器能先告诉你每个字段是什么类型。直接做 BSON 转 JSON 往往会把 ObjectId、长整数或日期压成普通值,审查时反而看不出原貌。

这里的 BSON 文件解析会显示绝对字节偏移,并提供带类型包装的扩展 JSON。反向编码只生成新文件,不会修改原文件。

为什么用 BSON 查看器?

把不透明的字节变成可核对的字段,同时留住类型。

字节对应到有序字段

BSON 查看器会校验一份完整文档,再按原顺序列出字段、类型、值预览和绝对偏移。长度错误或未知类型会停在具体字节,不会给出半份看似正常的结果。

二进制方块流展开为含标识符、日期、数字和嵌套节点的有序类型树。

规范表示保留类型

规范扩展 JSON 用包装对象保留 ObjectId、Int64、Decimal128 与二进制子类型;宽松视图更易读,但重新编码可能丢失部分类型信息。

带类型符号的文档块与花括号结构双向连接,另有较淡的易读视图。

导出之前先核对三件事

01

确认字节来源

十六进制允许空格、冒号和连字符;Base64 必须明确选择且填充合法。选择新文件替换旧输入时会先出现预览。

  • 如果文件是多个文档串接,错误会指出第一个文档结束的字节偏移。
02

先看类型树

手动运行后核对字段顺序、BSON 类型及偏移。树、规范 EJSON 和宽松 EJSON 可直接切换,无须重新解析。

  • 改动输入或编码后,过期结果不能复制或下载。
03

选对导出语义

需要保留类型就复制规范 EJSON;只为阅读可以切到宽松视图。编码模式把一个 EJSON 对象保存为新的 .bson 文件。

  • Ctrl/Cmd+Enter 可运行当前方向;下载后的 BSON 也能再读回来核对。

从字节定位到双向转换

逐字段类型树

ObjectId、Int32、Int64、Decimal128、日期、二进制子类型和嵌套字段都保留可辨认的类型。

两种扩展 JSON

规范视图默认保留类型包装;宽松视图便于阅读,但不会伪装成无损输出。

扩展 JSON 反向编码

用标准 EJSON 对象生成 BSON 字节,预览十六进制或 Base64,并下载新的二进制文件。

这些边界会影响结果

仅一份完整文档
多文档 mongodump 集合在首个文档结束处报错。要检查整条转储流,请使用 bsondump。
类型不能悄悄压平
默认文本导出是规范 EJSON;宽松模式中的数字和日期再编码时可能无法恢复原类型。
不执行数据库或脚本操作
此页不连接 MongoDB,也不抓取 URL;编码器只接受标准 JSON 语法中的 EJSON 包装,不运行 ObjectId(...)。
浏览器资源预算
文件和解码字节上限为 16 MiB、嵌套 64 层、类型树 10 万字段;这些不是 BSON 格式本身的限制。

关于 BSON 查看器的常见问题

怎样把 mongodump 的 BSON 文件变成 JSON?

单文档文件可在此导出规范扩展 JSON。集合转储通常含多个文档;本工具会报出首个文档后的偏移,完整转储请用 bsondump。

一个文件里有多份 BSON 文档也能读取吗?

不能。解析器要求整个输入恰好是一份文档;发现尾随字节时会给出绝对偏移,不会只显示第一份就宣称成功。

ObjectId 和日期能变成普通 JSON 吗?

宽松 EJSON 会让部分日期更易读,但规范表示保留类型包装。如果接口需要纯字符串,请在核对后明确转换目标字段。

怎样以人类可读形式查看 BSON 日期?

切换到宽松 EJSON,可在适用日期范围看到 ISO 表示;规范视图保留 $date 中的毫秒值。

为什么把 JSON 日期字符串编码后仍是字符串?

普通 JSON 字符串没有 BSON 日期类型。先写成扩展 JSON 的 $date 包装,再编码并在类型树中核对。

遇到了应当支持的协议定义?

现在打开 BSON 查看器

用 BSON 查看器把一份字节文档核对到类型树与规范 EJSON,需要时再生成新的 BSON 文件。

处理过程留在当前浏览器。