如何遍历含未知唯一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
相关产品推荐
相关产品推荐

