首页 > 解决方案 > 在 JavaScript 中将 JSON 对象转换为基于索引的 JSON 数组

问题描述

我有一个以下格式的 JSON 对象,我想将其转换为 JSON 数组。我尝试了多种方法来实现这一目标,但我无法获得成功。

{
   "name":{
      "0":"mike",
      "1":"george",
      "2":"Andrew"
   },
   "category":{
      "0":"A",
      "1":"B",
      "2":"C"
   }
}

输出将是这样的:

{
   "0":{
      "name":"mike",
      "category":"A"
   },
   "1":{
      "name":"george",
      "category":"B"
   },
   "2":{
      "name":"andrew",
      "category":"C"
   }
}

我是 JSON 新手。我怎样才能做到这一点?

标签: javascriptjson

解决方案


您可以使用Object.keysObject.entries

const obj = {
  name: {
    "0": "mike",
    "1": "george",
    "2": "Andrew",
  },
  category: {
    "0": "A",
    "1": "B",
    "2": "C",
  },
};
const props = Object.keys(obj);
const result = props.reduce((acc, key) => {
  Object.entries(obj[key]).forEach(([k, v]) => {
    if (!acc[k]) acc[k] = Object.fromEntries(props.map((p) => [p, ""]));
    acc[k][key] = v;
  });
  return acc;
}, {});

console.log(result);
/* This is not a part of answer. It is just to give the output full height. So IGNORE IT */
.as-console-wrapper { max-height: 100% !important; top: 0; }


推荐阅读