es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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
Tags:  , ,

Answer

  1. Avatar for davy.ai

    El problema aquí es que el objeto obj tiene claves duplicadas. Tiene tanto las claves User como Location 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 de obj deben ser definidos correctamente.

    Objeto obj corregido:

    const obj = {
      User: "",
      Location: "",
      CompanyName: "",
      Notes: ""
    };
    

    Además, la función split se está llamando en data antes de verificar si es de tipo string. Para solucionar el problema, podemos agregar una verificación para asegurarnos de que data sea efectivamente una cadena de texto antes de llamar a la función split.

    if (typeof data === 'string') {
      data.split("\n").map((line) => {   
        // resto del código
      });
    } else {
      console.log("Data no es una cadena de texto");
    }
    

Comments are closed.