Python如何为JSON数组中的每个对象统一添加指定键值对
解决方案
你不需要改动接口返回的外层元字段,只需要遍历detailsList数组下的每一个条目对象,给每个对象追加game: "first"键值对就可以达到预期效果,下面是两种最常用的技术栈实现:
- Node.js/JavaScript 场景(适配大部分前端、Node后端请求接口+写MongoDB的流程)
优先用无副作用的map写法,不会污染原始接口返回数据:
如果你不需要保留原始数据,也可以直接遍历修改原对象,写法更简洁:// rawApiResp 是接口返回的原始JSON对象 const dataToStore = { ...rawApiResp, detailsList: rawApiResp.detailsList.map(entry => ({ ...entry, game: 'first' })) }; // 后续直接把dataToStore插入MongoDB即可rawApiResp.detailsList.forEach(entry => { entry.game = 'first'; }); - Python 场景
逻辑完全一致,直接遍历字典列表追加字段即可:# raw_api_resp 是接口返回的原始字典 for entry in raw_api_resp["detailsList"]: entry["game"] = "first" # 处理完成后直接写入MongoDB
优化参考
如果后续需要处理其他游戏类型的数据(比如第二场、第三场),可以把追加标签的逻辑抽成通用函数,避免重复写代码:
// Node.js 通用处理函数示例 function tagGameData(rawResp, gameType) { return { ...rawResp, detailsList: rawResp.detailsList.map(entry => ({...entry, game: gameType})) }; } // 调用时传入对应标签即可,逻辑可以复用 const firstGame = tagGameData(await fetchGame(1), 'first'); const secondGame = tagGameData(await fetchGame(2), 'second');
避坑提醒:你现在追加的是字符串类型的值,不存在对象引用问题,直接赋值就可以。不要把同一个外部声明的对象反复赋值给不同数组元素,否则后续修改其中一个条目时会连带修改所有条目。
内容的提问来源于stack exchange,提问作者user1541634
相关产品推荐
相关产品推荐

