首页 > 解决方案 > 将 JSON 中的数组转换为 javascript 中的对象

问题描述

我有以下来自GraphQL 端点的数据:

{
  "data": {
    "metatags": [
      {
        "title": "Metatag title",
        "description": "Metatag description"
      }
    ],
    "herounits": [
      {
        "title": "Hero unit title",
        "description": "Hero unit description"
      }
    ]
  }
}

我需要将其中的数组替换为 JSON 对象,如下所示:

{
  "data": {
    "metatags": {
      {
        "title": "Metatag title",
        "description": "Metatag description"
      }
    },
    "herounits": {
      {
        "title": "Hero unit title",
        "description": "Hero unit description"
      }
    }
  }
}

一直在尝试不同的方法,但还没有奏效。

标签: javascriptjson

解决方案


您的期望对象无效,您有额外级别的对象嵌套,没有属性名称。

假设你真正想要的是:

{
  "data": {
    "metatags": {
        "title": "Metatag title",
        "description": "Metatag description"
    },
    "herounits": {
        "title": "Hero unit title",
        "description": "Hero unit description"
    }
  }
}

您可以通过将每个属性替换0为数组元素中的值来实现。

let obj = {
  "data": {
    "metatags": [
      {
        "title": "Metatag title",
        "description": "Metatag description"
      }
    ],
    "herounits": [
      {
        "title": "Hero unit title",
        "description": "Hero unit description"
      }
    ]
  }
};

Object.keys(obj.data).forEach(k => obj.data[k] = obj.data[k][0]);
console.log(obj);


推荐阅读