将JSON对象中的JSON对象隐藏到Javascript中的JSON数组中

Covert JSON objects inside json objects into a JSON Array in Javascript

本文关键字:JSON 对象 中的 数组 Javascript 隐藏      更新时间:2023-09-26

Hello我有下面的JSON结构,我试图在每个对象中创建一个每个对象的数组,但有一种方法可以转换它,而无需迭代每个元素并获取每个元素。或者使用Javascript函数获取对象内部的对象并转换为数组?

{
  "ES": {
    "130": {
      "code": "A Coruсa",
      "name": "A Coruña"
    },
    "131": {
      "code": "Alava",
      "name": "Alava"
    },
    "...": {
      "code": "...",
      "name": "..."
    }
  },
  "CH": {
    "104": {
      "code": "AG",
      "name": "Aargau"
    },
    "...": {
      "code": "...",
      "name": "..."
    }
  },
  "...": {
    "...": {
      "code": "...",
      "name": "..."
    }
  }
}

这就是我要找的:

[
    {
      "code": "A Coruсa",
      "name": "A Coruña"
    },
    {
      "code": "Alava",
      "name": "Alava"
    },
    {
      "code": "...",
      "name": "..."
    },
    {
      "code": "AG",
      "name": "Aargau"
    },
    {
      "code": "...",
      "name": "..."
    },
    {
      "code": "...",
      "name": "..."
    }
]

谢谢你的帮助,我接受任何建议。

您可以使用Object.keys()Array.prototype.reduce()Array.prototype.map()来迭代属性和组装数组。

var obj = { "ES": { "130": { "code": "A Coruсa", "name": "A Coruña" }, "131": { "code": "Alava", "name": "Alava" }, }, "CH": { "104": { "code": "AG", "name": "Aargau" } } },
    result = Object.keys(obj).reduce(function (r, k) {
        return r.concat(Object.keys(obj[k]).map(function (kk) {
            return obj[k][kk];
        }));
    }, []);
document.write('<pre>' + JSON.stringify(result, 0, 4) + '</pre>');

我创建了一个fiddle来转换数据。看看

https://jsbin.com/suzice/edit?js,输出

  var data = {
  "ES": {
    "130": {
      "code": "A Coruсa",
      "name": "A Coruña"
    },
    "131": {
      "code": "Alava",
      "name": "Alava"
    },
    "...": {
      "code": "...",
      "name": "..."
    }
  },
  "CH": {
    "104": {
      "code": "AG",
      "name": "Aargau"
    },
    "...": {
      "code": "...",
      "name": "..."
    }
  }
};
var list = [];
Object.keys(data).forEach(function(key){
  Object.keys(data[key]).forEach(function(sub_key){
     list.push(data[key][sub_key]);
  });
  console.log(list);
});