JavaScript中如何将第三方API返回的JSON对象转为对象数组?
解决方法:将键索引的JSON对象转换为目标格式的对象数组
没问题,这个转换用JavaScript原生API就能轻松搞定,我给你详细拆解步骤和代码示例:
1. 先明确原始数据与目标格式
假设你从第三方API拿到的原始JSON结构是这样的:
const apiResponse = { product1: { name: "无线耳机", price: 299 }, product2: { name: "机械键盘", price: 499 }, product3: { name: "蓝牙音箱", price: 199 } };
你需要转换成的目标格式是:
{ arrayName: [ { key: "product1", name: "无线耳机", price: 299 }, { key: "product2", name: "机械键盘", price: 499 }, { key: "product3", name: "蓝牙音箱", price: 199 } ] }
2. 核心转换代码
我们可以用Object.entries()配合map()方法一步完成转换:
// 1. 把原始对象拆解为[键, 值]组成的二维数组;2. 遍历重构每个元素 const transformedArray = Object.entries(apiResponse).map(([itemKey, itemData]) => { return { key: itemKey, // 这里的字段名可以自定义,比如改成id、itemId都行 ...itemData // 快速把原始对象的所有属性复制到新对象中 }; }); // 最后包裹成带arrayName的对象 const finalResult = { arrayName: transformedArray };
3. 关键方法说明
Object.entries(obj):将对象转换为[键名, 对应值]的二维数组,比如上面的apiResponse会变成[["product1", {...}], ["product2", {...}]]Array.map():遍历数组的每一项,把每组键值对重构为你需要的对象格式- 扩展运算符
...:避免手动逐个复制属性,直接把原始对象的所有键值对展开到新对象里
自定义调整
如果需要修改新对象里的字段名(比如把key改成productId),只需要修改return里的属性名即可:
return { productId: itemKey, // 自定义字段名 ...itemData };
内容的提问来源于stack exchange,提问作者Chetan Patil
相关产品推荐
相关产品推荐

