JavaScript中将JSON对象转换为基于索引的JSON数组的实现方法
JSON结构转换实现方案
实现逻辑
- 提取原对象中所有索引值,以任意字段的数字键作为索引集合(需保证所有字段的索引是对齐的)
- 遍历每个索引,依次取出所有字段对应索引的取值,拼接为新的子对象存入结果中
代码实现
以下为JavaScript版本的实现代码,可直接运行得到你需要的输出结构:
// 原JSON解析后的对象,如果你拿到的是JSON字符串,先用JSON.parse()转换为JS对象 const originalData = { "name":{ "0":"mike", "1":"george", "2":"Andrew" }, "category":{ "0":"A", "1":"B", "2":"C" } } const result = {} // 提取所有索引 const indexes = Object.keys(originalData.name) // 提取所有字段名,兼容后续新增字段的场景,无需硬编码字段 const fields = Object.keys(originalData) indexes.forEach(idx => { result[idx] = {} fields.forEach(field => { result[idx][field] = originalData[field][idx] }) }) // 如需转换为JSON字符串输出,调用以下方法 const resultJsonStr = JSON.stringify(result, null, 2) console.log(resultJsonStr)
补充说明
你提到需要JSON数组格式,如果不需要以数字为键的对象,只需将结果初始化为数组即可,修改方法如下:
// 初始化结果为数组 const result = [] indexes.forEach(idx => { const item = {} fields.forEach(field => { item[field] = originalData[field][idx] }) // 往数组中添加子项 result.push(item) })
输出的数组格式为:
[ {"name":"mike","category":"A"}, {"name":"george","category":"B"}, {"name":"Andrew","category":"C"} ]
内容的提问来源于stack exchange,提问作者Abhisek singh
相关产品推荐
相关产品推荐

