Cómo añadir un objeto json a un array en javascript
Gracias @dceejay, eso suena como el enfoque más simple. Todavía estoy recibiendo una idea de cómo el lado JS de nodo-rojo puede ser. Por el momento, la matriz se carga en Node-Red, a continuación, un nodo de la función empuja el nuevo objeto de evento a la matriz, a continuación, la matriz se vuelve a escribir en el archivo (a través de sobrescribir), pero no estoy cómodo con sobrescribir el archivo cada vez que un nuevo evento ocurre. Tenía la sensación de que era innecesario.
Sí – eso se volverá ineficiente muy rápidamente si el array crece. Es mucho mejor añadir a medida que se avanza (y dejar que el nodo del archivo añada la nueva línea) y luego reconstruir la matriz a medida que se lee todo de nuevo…
@dceejay Ahora que tengo esto funcionando, me ha surgido una pregunta más amplia. ¿Cómo maneja Node-Red (si es que lo hace) una condición de carrera para la lectura/escritura de un archivo? Por ejemplo, si tengo 5 sensores en 5 flujos, y van a escribir en mi archivo de “Eventos” en el disco cada vez que se desconectan, puedo ver un problema si todos se desconectan juntos, ya que ahora 5 nodos de escritura de archivos están tratando de añadir al mismo archivo al mismo tiempo. ¿Requiere esto algún tipo de buffer? ¿Archivos separados?
Escribir en un archivo json existente javascript
Este artículo es una guía completa sobre cómo utilizar el módulo fs incorporado para leer y escribir datos en formato JSON. También veremos algunos paquetes npm de terceros que simplifican el trabajo con datos en formato JSON.
La serialización es el proceso de modificar un objeto o una estructura de datos a un formato que sea fácil de almacenar o transferir a través de Internet. Puedes recuperar los datos serializados aplicando el proceso inverso.
Cada función expuesta por el módulo fs tiene la forma sincrónica, de devolución de llamada y basada en promesas. Las variantes sincrónica y de devolución de llamada de un método son accesibles desde la API sincrónica y de devolución de llamada. La variante basada en la promesa de una función es accesible desde la API basada en la promesa.
Los métodos síncronos del módulo incorporado fs bloquean el bucle de eventos y la ejecución posterior del código restante hasta que la operación haya tenido éxito o haya fallado. La mayoría de las veces, bloquear el bucle de eventos no es algo que se quiera hacer.
El entorno de ejecución de Node tiene la función require incorporada y el módulo fs que puedes utilizar para cargar o leer archivos JSON. Debido a que require está disponible globalmente, no necesitas requerirlo.
Cómo añadir un valor en un objeto json
Para actualizar un objeto JSON en un archivo, importa la biblioteca json, lee el archivo con json.load(file), añade la nueva entrada a la lista o diccionario de datos de la estructura, y escribe el objeto JSON actualizado con json.dump(data, file).
Los tres métodos presentados en este artículo utilizan básicamente la misma idea: llamar a json.dump(data, file) para actualizar un archivo con algunos datos. La variable data puede contener todos los diferentes formatos de JSON, como una lista de diccionarios o un diccionario.
Generalmente, añadir datos a un archivo JSON no es una muy buena idea porque, para cada pequeña actualización, tienes que leer y analizar todo el objeto del archivo. Si tu archivo JSON tiene n entradas, la complejidad en tiempo de ejecución de sólo actualizarlo es O(n).
Un mejor enfoque sería almacenar los datos como un archivo CSV que puede ser leído línea por línea que simplifica el análisis y la actualización significativamente con sólo añadir una sola línea al archivo que tiene una complejidad de tiempo de ejecución constante.
“Los verdaderos programadores establecen las constantes universales al principio de tal manera que el universo evoluciona para contener el disco con los datos que quieren”. – xkcdChrisMientras trabajaba como investigador en sistemas distribuidos, el Dr. Christian Mayer encontró su amor por enseñar a los estudiantes de informática.
Cómo añadir una cadena json en javascript
Stack Overflow for Teams se traslada a su propio dominio. Cuando se complete la migración, accederás a tus Equipos en stackoverflowteams.com, y ya no aparecerán en la barra lateral izquierda de stackoverflow.com.
Un objeto es una colección de claves sin ordenar. El orden de las claves realmente no debería importar a una aplicación que lea el documento JSON. Si quieres datos ordenados, entonces considera usar arrays en su lugar.
Podemos insertar cosas antes del último elemento de este array. Aquí, estoy reescribiendo el array de “entradas” usando un trozo de los primeros elementos (todos menos el último elemento original, .[:-1]), el nuevo elemento, y finalmente el último elemento original (.[-1]).