You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何遍历含未知唯一ID键的DynamoDB嵌套JSON对象

遍历未知键名嵌套JSON的实现方案

你不需要提前知道entry下的自动生成ID,这类动态键名的嵌套结构,直接用编程语言内置的对象/字典遍历方法,就能拿到所有动态ID和对应的条目内容。

核心逻辑

你的JSON结构里,entry字段的值是一个标准对象:键是随机生成的唯一条目ID,值是具体的业务条目属性集合。遍历的核心步骤是:

  • 先定位到entry对象
  • 枚举entry对象的所有自有键(也就是那些自动生成的ID)
  • 循环中通过键取到对应的条目对象,再读取employeeLevel等你需要的属性即可

常见开发场景代码示例

Node.js/JavaScript (DynamoDB JS SDK 场景)

如果已经拿到解析后的普通JSON对象,直接用Object.entries遍历即可:

// resp 是DynamoDB查询返回、已反序列化的结果
const entries = resp.entry;

// 遍历同时拿到条目ID和条目内容
for (const [entryId, entryDetail] of Object.entries(entries)) {
  // 按需读取属性
  const empLevel = entryDetail.employeeLevel;
  const postTitle = entryDetail.title;
  const createTime = entryDetail.timeCreated;
  // 后续业务逻辑直接写在这里
}

如果拿到的是DynamoDB原始带类型标记的结果,先用SDK自带的unmarshall工具转成普通JSON再遍历:

const { unmarshall } = require("@aws-sdk/util-dynamodb");
const plainData = unmarshall(rawDynamoRecord);
// 后续遍历逻辑和上面一致

Python (boto3 场景)

boto3的Table资源接口默认会把结果解析成普通Python字典,直接用字典的items()遍历:

# resp 是boto3 table.get_item/query 等接口返回的结果
entry_map = resp.get("Item", {}).get("entry", {})

for entry_id, entry_info in entry_map.items():
    emp_level = entry_info.get("employeeLevel")
    post_body = entry_info.get("body")
    # 业务逻辑直接写在这里

如果用的是底层client接口拿到带类型标记的结果,先用反序列化工具转成普通字典再遍历即可。


内容的提问来源于stack exchange,提问作者darthhaider

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.31 00:57:15