Tengo un pequeño conjunto de datos en un archivo JSON que quiero convertir a un formato de datos jerárquico para crear un gráfico de paquete circular. Este es mi conjunto de datos:
{ "Marks": [ {"student": "Maria", "AI": 95, "DB": 77, "CG": 31, "ITP": 97, "LIT": 45}, {"student": "Sam", "AI": 85, "DB": 37, "CG": 39, "ITP": 45, "LIT": 55} ] }Esta es la salida que estoy buscando:
{ "name": "Marks", "children": [ { "name": "Maria", "children": [ { "name": "AI" , "marks" : 95}, { "name": "DB" , "marks" : 77}, { "name": "CG" , "marks" : 35}, { "name": "ITP" , "marks" : 97}, { "name": "LIT" , "marks" : 45}, ] }, { "name": "Sam", "children": [ { "name": "AI" , "marks" : 85}, { "name": "DB" , "marks" : 37}, { "name": "CG" , "marks" : 39}, { "name": "ITP" , "marks" : 45}, { "name": "LIT" , "marks" : 55}, ] } ] }¿Alguna idea de cómo puedo proceder con esto?
prueba esto
var newObj = {}; Object.keys(marks).forEach((key) => { newObj.name = key; newObj.children = []; var i = 0; marks[key].forEach((element) => { Object.keys(element).forEach((k) => { if (k == "student") newObj.children.push({ name: element[k], children: [] }); else newObj.children[i].children.push({ name: k, marks: element[k] }); }); i++; }); });resultado
{ "name": "Marks", "children": [ { "name": "Maria", "children": [ { "name": "AI", "marks": 95 }, { "name": "DB", "marks": 77 }, { "name": "CG", "marks": 31 }, { "name": "ITP", "marks": 97 }, { "name": "LIT", "marks": 45 } ] }, { "name": "Sam", "children": [ { "name": "AI", "marks": 85 }, { "name": "DB", "marks": 37 }, { "name": "CG", "marks": 39 }, { "name": "ITP", "marks": 45 }, { "name": "LIT", "marks": 55 } ] } ] }