首页 > 解决方案 > 如何在 JSON 中添加对象数组

问题描述

我的问题完全与 JSON 的结构有关。我有这个:

{
  "cars": {
    "rows": [
      {
        "name": "Mercedes",
        "color": "Black",
        "make": "Mercedes"
      },
      {
        "name": "BMW",
        "color": "Black",
        "make": "BMW Germany"
      },
      {
        "name": "Innova",
        "color": "Red",
        "make": "Toyota"
      }
    ]
  }
}

到目前为止,row是一个包含不同汽车信息的对象数组。我想要两个这样的行数组。只需要两个。像这样:

{
  "staticKpi": {
    "rows": [
      {
        // 1st row 1st object
      },
      {
        // 1st row 2nd object
      },
      {
        // 1st row 3rd object
      }
    ],
    [
      {
        // 2nd row 1st object
      },
      {
        // 2nd row 2nd object
      },
      {
        // 2nd row 3rd object
      }
    ]
  }
}

你可以在这里看到这个 JSON 。但这给了我 JSON 错误。我只想保留两行对象,因此rows. 希望我能够解释这个问题。请纠正我的错误。

PS:我稍后在这个 JSON 上运行了 forEach 循环。所以我也得照顾它。

标签: json

解决方案


试试这样:

{
   "staticKpi":{
      "rows":[
         [
            {
               "name":"Mercedes",
               "color":"Black",
               "make":"Mercedes"
            },
            {
               "name":"BMW",
               "color":"Black",
               "make":"BMW Germany"
            },
            {
               "name":"Innova",
               "color":"Red",
               "make":"Toyota"
            }
         ],
         [
            {
               "name":"Mercedes",
               "color":"Black",
               "make":"Mercedes"
            },
            {
               "name":"BMW",
               "color":"Black",
               "make":"BMW Germany"
            },
            {
               "name":"Innova",
               "color":"Red",
               "make":"Toyota"
            }
         ]
      ]
   }
}

rows必须是一个对象/数组,不能是两个。要拥有多个元素,您需要将这两个元素放在一个数组中。

编辑:要在 JavaScript 中循环使用这些forEach,您可以这样做:

data = {"staticKpi":{"rows":[[{"name":"Mercedes","color":"Black","make":"Mercedes"},{"name":"BMW","color":"Black","make":"BMW Germany"},{"name":"Innova","color":"Red","make":"Toyota"}],[{"name":"Mercedes","color":"Black","make":"Mercedes"},{"name":"BMW","color":"Black","make":"BMW Germany"},{"name":"Innova","color":"Red","make":"Toyota"}]]}};

data.staticKpi.rows.forEach((row) => console.log(row));


推荐阅读