简体   繁体   English

将JSON对象内的JSON对象隐式转换为Javascript中的JSON数组

[英]Covert JSON objects inside json objects into a JSON Array in Javascript

Hello I have the following JSON structure and I try to make an array of each object inside each object but there is a way to convert it without iterating each element and get every element. 您好,我具有以下JSON结构,并且尝试在每个对象内创建每个对象的数组,但是有一种方法可以在不迭代每个元素并获取每个元素的情况下进行转换。 Or maybe using a Javascript function to get object inside objects and convert to an array? 还是使用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": "..."
    }
  }
}

This is what I am looking for: 这是我在寻找的东西:

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

Thanks for your help, I accept any recommendations. 感谢您的帮助,我接受任何建议。

You can use Object.keys() , Array.prototype.reduce() and Array.prototype.map() for iterating over the properties and for assembling the array. 您可以使用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>'); 

I have created a fiddle to convert the data. 我创建了一个小提琴来转换数据。 look at it 看它

https://jsbin.com/suzice/edit?js,output 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);

});

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM