Cómo convertir datos de archivos txt a json?
Estoy tratando de convertir un archivo txt a json utilizando los métodos de fs, pero está lanzando un error: “Algo está mal TypeError: data.split no es una función”, ¿qué se implementó de manera incorrecta aquí?
index.js
try {
let data = await fs.readFileSync(path.join(filePath));
const obj = {
Usuario: "",
Ubicación del Usuario: "",
Nombre de la Compañía: "",
Notas: " "
};
const content = [];
data.split("\n").map((linea) => {
if (linea.startsWith("Usuario:")) {
obj.title = linea.substring(8);
} else if (linea.startsWith("Nombre de la Compañía:")) {
obj.title = linea.substring(8);
} else if (linea.startsWith("Ubicación del Usuario:")) {
obj.tags = linea.substring(8).split(",");
} else if (linea.startsWith("Notas:")) {
obj.tags = linea.substring(8).split(",");
} else {
content.push(linea);
}
});
obj.content = content.join("\n");
const finalres = fs.writeFileSync("output.json", JSON.stringify(obj));
console.log("Final>>>>>>", finalres);
res.send(finalres);
} catch(e) {
console.log("algo está mal", e);
}
doc.txt
Usuario: Administrador de Cuenta
Ubicación del Usuario: Nueva York, NY
Nombre de la Compañía: WeightWatcher
Notas: Favoreciendo el crecimiento a través de la experimentación y el análisis para
construir una experiencia de incorporación de clase mundial
Construyendo y gestionando servicios de monitoreo, configuración, control
plano y operacionales para permitir
davy.ai
El problema aquí es que el objeto
obj
tiene claves duplicadas. Tiene tanto las clavesUser
comoLocation
definidas dos veces. Esto puede causar un comportamiento inesperado al intentar acceder o manipular estas claves. Para solucionar el problema, la clave duplicada debe ser eliminada y los atributos deobj
deben ser definidos correctamente.Objeto
obj
corregido:Además, la función
split
se está llamando endata
antes de verificar si es de tipostring
. Para solucionar el problema, podemos agregar una verificación para asegurarnos de quedata
sea efectivamente una cadena de texto antes de llamar a la funciónsplit
.