数据库与 SQL 工具

DynamoDB JSON 转换

先选择转换方向和输入结构,再决定保留类型还是输出普通 JSON。

DynamoDB JSON 转换

输入 JSON

结果 JSON

数据仅在当前浏览器处理,不发送到服务器。

转换选项

保留模式使用自定义 $ddb 标记保存集合与二进制;$ddb.M 用于转义形似标记的真实映射。

上限:输入 500,000 字符、50,000 节点、32 层文档嵌套,输出 2,000,000 字符。

结果已过期,请转换当前输入。

DynamoDB JSON 转换适合处理从控制台、低级接口或命令行复制的属性数据。当每个字段都包着 S、N、M 等标签时,直接删除这些键可能改变原本的数据类型。先确定手里的内容是一条项目映射、项目数组,还是单个属性值。

DynamoDB 转 JSON 和 JSON 转 DynamoDB 是两种不同的映射过程。数字以字符串传输,却仍然是数值;列表有顺序,集合要求唯一。这里把这些差别放在转换规则里,便于准备测试样本、检查接口响应和核对迁移数据。

为什么使用 DynamoDB JSON 转换

大整数不经过浮点数中转

DynamoDB JSON 转换直接读取数字的原始文本。例如 9007199254740993 会以相同的数字、无引号的数值形式输出。小数的有效位数和数量级也按十进制检查,不会先舍入再声称转换成功。

一整串彩色数值块经过转换通道后,数量和顺序保持一致。

保留返回原类型所需的信息

默认保留模式为集合和二进制加上明确的 $ddb 标记;普通模式输出数组及 Base64 字符串,并逐条列出发生类型变化的路径。你可以为下游系统选择普通结构,同时知道哪些原始含义无法从结果中恢复。

带类型徽标的集合经过可逆通道仍保留标记,另一条通道输出没有徽标的普通数组。

先分清响应包装,再选择结果语义

01

复制包装内部的实际值

从 GetItem 响应中复制 Item 的值并选项目映射;从查询响应中复制 Items 数组并选批量项目。单个属性值模式接受 {"N":"42"} 这类对象。工具不会看到同名字段就自动判断结构,真实属性名仍会保留。

02

按后续用途选择类型策略

需要在这里转回来时保持默认保留类型。接收方只认普通 JSON 时改用普通模式,并检查结果下方的每一条类型变化路径。反向转换时,普通数组固定变成 L,普通字符串固定变成 S,不按内容猜测集合或二进制。

03

确认结果已经更新

编辑输入、切换方向或改变缩进都会立即禁用旧结果导出。自动模式停顿 350 毫秒后刷新;关闭后可点转换,或按 Ctrl/Cmd + Enter。示例和清空先显示替换预览,撤销会同时恢复输入、输出及此前的有效状态。

覆盖属性值结构中的关键差异

十种标签与嵌套结构

支持 S、N、B、BOOL、NULL、M、L、SS、NS、BS。列表可以混合不同类型;空字符串、空二进制、空对象和空列表均保留。NULL 会转成真正的 null,不会把整个字段从父对象中删除。

单条与批量共用严格规则

项目映射对应一条记录,批量模式接收记录组成的 JSON 数组。任何一项错误都会阻止整批导出,不跳过坏记录。属性名叫 S、N、Item 或 Items 都不会触发自动拆包,也不会被误当成类型声明。

按数值语义检查集合

数字最多允许 38 位有效数字,并检查非零值的数量级。NS 中的 1 和 1.0 属于重复值;字符串集合按字符串比较,二进制集合按字节比较。发现重复或空集合直接报错,不自动去重、排序或补值。

错误位置与类型变化可复核

语法错误和类型错误都显示输入路径、行号与列号,并在编辑器中高亮错误行。普通结果的集合与二进制变化单独列出,每次显示 50 条;复制和下载则始终包含完整有效结果,不受可见明细数量限制。

哪些含义能保留,哪些需要明确选择

保留标记是本站约定
保留模式在值位置使用 {"$ddb":{"SS":["red"]}},B、NS 和 BS 同理。真实映射如果只有一个 $ddb 键,会用 $ddb.M 包住原始属性映射以避开冲突。这不是 AWS 的标准传输格式;需要属性值 JSON 时应先执行反向转换。
普通数组不能证明自己曾是集合
普通 JSON 无法区分原来的 L、SS、NS 或 BS;看起来像 Base64 的字符串也不一定是 B。普通模式明确列出这些变化,反向只生成 L 和 S,同时把 $ddb 当作普通对象键。切换模式不能自动找回已经丢失的类型信息。
精度保证限于输出文本
本页保留数字词法,但下游如果用 JavaScript 的 JSON.parse 读入超大整数,仍可能舍入。支持最多 38 位有效数字;非零绝对值下限为 1e-130,上限为低于 1e126 的最大 38 位数。N 中非标准 JSON 数字写法会精确规范化。
严格语法与资源边界
输入上限是 500,000 个 UTF-16 代码单元和 50,000 个语法节点;文档容器最多嵌套 32 层,输出最多 2,000,000 字符。重复对象键、重复或空集合、非法 Base64、孤立代理字符都会阻止转换,不截断、不自动修复后继续导出。
转换不等于可以直接写表
工具不提取 Item、Items、Streams 包装,不直接接收 JSONL 或 S3 导出行,不连接 AWS,也不读取地址、上传文件或写入表。未检查表的主键、索引和 400 KB 实际存储大小;非键允许的空值,用作键时可能不合法。

DynamoDB JSON 转换常见问题

如何把 DynamoDB JSON 转成普通 JSON 对象?

选择 DynamoDB → JSON 和项目映射,输入对象的每个属性值应带有类型标签。单独转换 {"S":"text"} 时选择单个属性值。默认仅在 JSON 无法直接表达集合或二进制语义时添加保留标记,其余字段按实际类型输出。

为什么转换后的大数字会变成字符串?

有些工具把大数字加引号,借此避开浮点数舍入。本工具保留未加引号的原始数字文本,并以十进制规则验证精度和范围。输出文本中的数字保持准确,但接收它的程序也必须选用能保留大整数精度的解析方式。

能转换集合和二进制值吗?

可以。默认验证并保留 B、SS、NS 和 BS 的明确类型标记。选择普通 JSON 后,它们变成字符串或数组,结果中会列出每个受影响路径。再把这份普通结果反向转换,并不能推断出原来的特殊类型。

能一次转换整张表的导出数据吗?

在输入长度和节点上限内,可以把项目映射组成一个数组后使用批量模式。AWS 的 S3 导出通常是带 Item 包装的逐行 JSON,并不直接适用。请先提取并整理成有限大小的项目数组;其中任何错误都会阻止整批转换。

如何简化 AWS CLI 查询返回的 DynamoDB JSON?

先从命令行响应中复制 Item 的值或 Items 数组,再选择对应结构。工具不会自动删除响应元数据或选择字段。需要构造低级接口数据时,可切换 JSON → DynamoDB,把普通对象转换为带类型描述符的属性映射。

还有属性类型没有解释清楚?

用完整样例检查一次

在 DynamoDB JSON 转换中先尝试包含多种类型的样例,再按接收方的要求确定结果表示方式。