#include <ArduinoJson.h>
/*{"sensor":"gps","time":1351824120,"data":[48.756080,2.302038]}*/
DynamicJsonDocument INPUT_JSON ( 1024 ),   // Objeto que almacena el mensaje de la consola serial.
                    OUTPUT_JSON (1024);    // Objeto que traspasa la información del JSON de recepción hacia el de salida.
void setup ( void ) {

  Serial.begin ( 115200 );
  Serial.println ( "Hello, ESP32!" );

}

void loop ( void ) {

  if ( Serial.available ( ) ) {    // Si llegaron bytes al buffer de recepción serial.

    Serial.println("Ha llegado una trama: ");
    deserializeJson ( INPUT_JSON, byte_x_byte ( ) );    // Almacenar como objeto el string que ha llegado por consola.
    serializeJsonPretty( INPUT_JSON, Serial );          // Mostrar en consola para verificar que si llegó correctamente.
    Serial.println ( ); 
    /*Crear un nuevo JSON de salida con los datos del JSON de entrada*/
    OUTPUT_JSON [ "sensor" ]   = INPUT_JSON [ "sensor" ];
    OUTPUT_JSON [ "time" ]     = INPUT_JSON [ "time" ];
    OUTPUT_JSON [ "data" ] [ 0 ]  = INPUT_JSON [ "data" ] [ 0 ];
    OUTPUT_JSON [ "data" ] [ 1 ]  = INPUT_JSON [ "data" ] [ 1 ];
    Serial.println ( "Nuevo objeto JSON: " );
    serializeJsonPretty( OUTPUT_JSON, Serial );
     
  }
  

 // put your main code here, to run repeatedly:
  delay(10); // this speeds up the simulation
}

String byte_x_byte ( void ) {
String mensaje = "";
      while ( Serial.available ( ) != 0 )
        mensaje += ( char ) Serial.read ( ) ; 
return mensaje;
}