首页 > 解决方案 > Javascript 对象转换

问题描述

我正在使用地图来转换 JSON。我得到的是一个数据数组,而不是单个对象。截图如下。

我正在尝试实现以下 JSON

{
  "data": {
    "test1": {
        "abc": {
            "size": "big",
            "id": "1"
        }
    },
    "test2": {
        "abc": {
            "size": "small",
            "id": "2"
        }
    }
  }
}

但是得到以下 JSON

{
"data": [{
    "test1": {
        "abc": {
            "size": "big",
            "id": "1"
        }
    }
}, {
    "test2": {
        "abc": {
            "size": "big",
            "id": "2"
        }
    }
}]

}

这是我的代码。

const test = [{ id: 'ddec9c7f-95aa-4d07-a45a-dcdea96309a9',
  ad_id: 'test1',
  country: 'ID',
  abc: { size: 'big', id: '1' },
},
{ id: 'ddec9c7f-95aa-4d07-a45a-dcdea96309a9',
  ad_id: 'test2',
  country: 'ID',
  abc: { size: 'small', id: '2' },
},
];
const transformedTest = test.map(result =>
  ({ [result.ad_id]: { abc: result.abc } }));

const data = { data: transformedTest };
console.log(JSON.stringify(data));

任何帮助将不胜感激

标签: javascriptnode.jstransformation

解决方案


尝试这个:

const test =  [
  {
    "id": "ddec9c7f-95aa-4d07-a45a-dcdea96309a9",
    "ad_id": "test1",
    "country": "ID",
    "abc": {
      "size": "big",
      "id": "1"
    }
  },
  {
    "id": "ddec9c7f-95aa-4d07-a45a-dcdea96309a9",
    "ad_id": "test2",
    "country": "ID",
    "abc": {
      "size": "big",
      "id": "2"
    }
  }
];
const result  = test.reduce((acc,{ad_id, abc})=> (acc.data[ad_id] = {abc}, acc),{data:{}}) 

console.log(result);


推荐阅读