首页 > 解决方案 > 我怎样才能转换json格式?

问题描述

第一个是来自源的确切数据格式,并希望转换为第二种格式。我无法更改来源,所以想更改为所需的格式。

我浏览了许多与我的问题相关的帖子,但我无法为我正在寻找的内容找到合适的解决方案。

JSON 格式

"data": [
    {
        "title": "Dog",
        "channel_id": 1,
        "channel_image": "some channel image url",
        "playStationID": 1,
        "playStationGener": "Dog0",
        "playStationInfo": "blah blah",
        "playStationName": "ABC1",
        "playStationImage": "some image url",
        "isFavorite": "NO"
    },
    {
        "title": "Dog",
        "channel_id": 1,
        "channel_image": "some channel image url",
        "playStationID": 2,
        "playStationGener": "Dog1",
        "playStationInfo": "blah blah",
        "playStationName": "ABC2",
        "playStationImage": "some image url",
        "isFavorite": "NO"
    },
    {
        "title": "Cat",
        "channel_id": 2,
        "channel_image": "some channel image url",
        "playStationID": 4,
        "playStationGener": "Cat0",
        "playStationInfo": "blah blah",
        "playStationName": "XYZ1",
        "playStationImage": "some image url",
        "isFavorite": "NO"
    },
    {
        "title": "Cat",
        "channel_id": 2,
        "channel_image": "some channel image url",
        "playStationID": 4,
        "playStationGener": "Cat1",
        "playStationInfo": "blah blah",
        "playStationName": "ABC2",
        "playStationImage": "some image url",
        "isFavorite": "NO"
    }
]

此格式必填

[
    {
        "title": "Dog",
        "channel_id": 1,
        "channel_image": "some channel image url"
        "data": [
            {
                "playStationID": 1,
                "playStationGener": "Dog0",
                "playStationInfo": "blah blah",
                "playStationName": "ABC1",
                "playStationImage": "some image url",
                "isFavorite": "NO"
            },
            {
                "playStationID": 2,
                "playStationGener": "Dog1",
                "playStationInfo": "blah blah",
                "playStationName": "ABC2",
                "playStationImage": "some image url",
                "isFavorite": "NO"
            }
        ]
    },{
        "title": "Cat",
        "channel_id": 2,
        "channel_image": "some channel image url"
        "data": [
            {
                "playStationID": 4,
                "playStationGener": "Cat0",
                "playStationInfo": "blah blah",
                "playStationName": "XYZ1",
                "playStationImage": "some image url",
                "isFavorite": "NO"
            },
            {
                "playStationID": 4,
                "playStationGener": "Cat1",
                "playStationInfo": "blah blah",
                "playStationName": "ABC2",
                "playStationImage": "some image url",
                "isFavorite": "NO"
            }
        ]
    }
]

请帮忙!!提前致谢。

标签: javascriptjson

解决方案


您可以使用对象解构Object.keysArray.prototype.map轻松完成它。

const obj = {
  data: [{
      title: "Dog",
      channel_id: 1,
      channel_image: "some channel image url",
      playStationID: 1,
      playStationGener: "Dog0",
      playStationInfo: "blah blah",
      playStationName: "ABC1",
      playStationImage: "some image url",
      isFavorite: "NO",
    },
    {
      title: "Dog",
      channel_id: 1,
      channel_image: "some channel image url",
      playStationID: 2,
      playStationGener: "Dog1",
      playStationInfo: "blah blah",
      playStationName: "ABC2",
      playStationImage: "some image url",
      isFavorite: "NO",
    },
    {
      title: "Cat",
      channel_id: 2,
      channel_image: "some channel image url",
      playStationID: 4,
      playStationGener: "Cat0",
      playStationInfo: "blah blah",
      playStationName: "XYZ1",
      playStationImage: "some image url",
      isFavorite: "NO",
    },
    {
      title: "Cat",
      channel_id: 2,
      channel_image: "some channel image url",
      playStationID: 4,
      playStationGener: "Cat1",
      playStationInfo: "blah blah",
      playStationName: "ABC2",
      playStationImage: "some image url",
      isFavorite: "NO",
    },
  ],
};

const resObj = obj.data.reduce((acc, curr) => {
  const {
    title,
    channel_id,
    channel_image,
    ...rest
  } = curr;

  if (!acc[title]) {
    acc[title] = {
      title,
      channel_id,
      channel_image,
      data: [rest],
    };
  } else {
    acc[title]["data"].push(rest);
  }
  return acc;
}, {});

const result = Object.keys(resObj).map((x) => resObj[x]);
console.log(result);


推荐阅读