Last active
September 5, 2024 17:33
-
-
Save amenpunk/351d1ffd9ddf5a5f4b05a336a6bd2fe2 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
function loadJsonAsObjectfromFile() { | |
var fs = require('fs'); | |
var jsonData = fs.readFileSync('data.json'); | |
// var jsonData = fs.readFileSync('inter.json'); | |
return JSON.parse(jsonData); | |
} | |
function writeJsonToFile(jsonData) { | |
var fs = require('fs'); | |
fs.writeFileSync('out.json', JSON.stringify(jsonData, null, 2)); | |
} | |
var doc = loadJsonAsObjectfromFile(); | |
// console.log(doc) | |
/** | |
* Función recursiva para procesar y transformar los nodos "Categoria". | |
* @param {Object} categoria - Objeto Categoria del JSON | |
*/ | |
/** | |
* Función recursiva para procesar y transformar los nodos "Categoria" y cambiar los nombres de los atributos. | |
* @param {Object} categoria - Objeto Categoria del JSON. | |
*/ | |
function processCategoria(categoria) { | |
// Cambiar "@Nombre" a "DocumentSubject" | |
if (categoria["@Nombre"]) { | |
categoria["DocumentSubject"] = categoria["@Nombre"]; | |
delete categoria["@Nombre"]; | |
} | |
// Cambiar "Tipo_documento" a "DocumentServiceType" | |
if (categoria["Tipo_documento"]) { | |
categoria["DocumentServiceType"] = categoria["Tipo_documento"]; | |
delete categoria["Tipo_documento"]; | |
// console.log('CATEGO - ', categoria["DocumentServiceType"]) | |
let cate = categoria["DocumentServiceType"] | |
if (Array.isArray(cate)) { | |
// Procesar cada tipo de documento para modificar "@nombre" a "DocumentSubject" | |
categoria["DocumentServiceType"].forEach((tipo) => { | |
if (tipo["@nombre"]) { | |
tipo["DocumentSubject"] = tipo["@nombre"]; | |
delete tipo["@nombre"]; | |
} | |
}); | |
} else { | |
categoria["DocumentServiceType"] = [{ "DocumentSubject": cate["@nombre"] }]; | |
} | |
} | |
// Cambiar "Categoria" a "DocumentService" y procesarlas recursivamente | |
if (categoria["Categoria"]) { | |
categoria["DocumentService"] = categoria["Categoria"]; | |
delete categoria["Categoria"]; | |
let cate = categoria["DocumentService"] | |
if (Array.isArray(cate)) { | |
categoria["DocumentService"].forEach((subCategoria) => { | |
processCategoria(subCategoria); | |
}); | |
} else { | |
categoria["DocumentService"] = [cate]; | |
categoria["DocumentService"].forEach((subCategoria) => { | |
processCategoria(subCategoria); | |
}); | |
} | |
} | |
} | |
function OnlyTipos(categorias) { | |
if (categorias['Tipo_documento']) { | |
let tipo = categorias['Tipo_documento'] | |
if (Array.isArray(tipo)) { | |
// Procesar cada tipo de documento para modificar "@nombre" a "DocumentSubject" | |
tipo.forEach((tipo) => { | |
if (tipo["@nombre"]) { | |
tipo["DocumentSubject"] = tipo["@nombre"]; | |
delete tipo["@nombre"]; | |
} | |
}); | |
} else { | |
categorias["Tipo_documento"] = [{ "DocumentSubject": tipo["@nombre"] }]; | |
} | |
} | |
} | |
// Función principal para iniciar el procesamiento del JSON | |
function main() { | |
// Asigna tu JSON a una variable | |
// Accede a la estructura donde comienzan las categorías | |
var categorias = doc["EXPEDIENTE.OUTPUT"]["Tipos_documento"]["Categoria"]; | |
// Procesa la categoría principal y sus subcategorías recursivamente | |
if (Array.isArray(categorias['Categoria'])) { | |
categorias["Categoria"].forEach((categoria) => { | |
processCategoria(categoria); | |
}); | |
} | |
OnlyTipos(categorias) | |
categorias['DocumentSubject'] = categorias['@Nombre']; | |
categorias['DocumentService'] = categorias['Categoria']; | |
categorias['DocumentServiceType'] = categorias['Tipo_documento'] | |
delete categorias['@Nombre']; | |
delete categorias['Categoria']; | |
delete categorias['Tipo_documento'] | |
// console.log(categorias) | |
writeJsonToFile(categorias) | |
// Muestra el JSON modificado (si deseas verificar los cambios) | |
//console.log(JSON.stringify(jsonData, null, 2)); | |
} | |
main(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment