如何将单个JSON对象拆分为一个JSON嵌套数组?

时间:2019-07-04 10:52:56

标签: javascript json

我有如下所示的JSON,如何使用JavaScript将其转换为一个嵌套的JSON数组?

{
  "Class": [
    {
      "StudentName": [
        "Ash",
        "Win"
      ],
      "Rank": [
        "1",
        "2"
      ],
      "ID": [
        "001",
        "002"
      ]
    }
  ]
}

如何将其拆分为一个JSON嵌套数组:

{
  "Class": [
    {
      "StudentName":"Ash",
      "Rank":"1",
      "ID":"001"
    },
    {
      "StudentName":"Win",
      "Rank":"2",
      "ID":"002"
    }
  ]
}

3 个答案:

答案 0 :(得分:0)

没有魔术,只是为了循环:

const sourceObj = {
  "Class": [
    {
      "StudentName": [
        "Ash",
        "Win"
      ],
      "Rank": [
        "1",
        "2"
      ],
      "ID": [
        "001",
        "002"
      ]
    }
  ]
} 

const studentData = sourceObj.Class[0]    
const length = studentData["StudentName"].length

const targetObj = {
  Class: [] 
}
for (i = 0; i < length; i++) {
  targetObj.Class.push({
    StudentName: null // Do a bare minimum yourself
  })
} 

console.log(targetObj)

答案 1 :(得分:0)

尝试这样。

我已经遍历了项目并生成了对象,并将其推送到类数组。

 var api = $.getJSON("https://api.data.gov.sg/v1/environment/rainfall?date=2019-07-03",
   function rainfall(data_rainfall){
   apiGeo = { type: "FeatureCollection", features: []};
             //---- apiGeo is populated here ----//

  console.log(apiGeo);     //displays data in GeoJSON format in browser console
});

function exportToJsonFile(apiGeo) {
let dataStr = JSON.stringify(apiGeo);
let dataUri = 'data:application/json;charset=utf-8,'+ encodeURIComponent(dataStr);

let exportFileDefaultName = 'data.json';

let linkElement = document.createElement('a');
linkElement.setAttribute('href', dataUri);
linkElement.setAttribute('download', exportFileDefaultName);
linkElement.click();
} 

答案 2 :(得分:0)

您获得的json数据并不理想,但是可以正常工作:

const testData = {
  "Class": [
    {
      "StudentName": [
        "Ash",
        "Win"
      ],
      "Rank": [
        "1",
        "2"
      ],
      "ID": [
        "001",
        "002"
      ]
    }
  ]
};

const students = testData.Class[0].StudentName.map((student, index) => {
  return {
    name: testData.Class[0].StudentName[index],
    rank: testData.Class[0].Rank[index],
    ID: testData.Class[0].ID[index],
  };
});

console.log(students);