Questo argomento contiene 2 risposte, ha 2 partecipanti, ed è stato aggiornato da  jfet 8 mesi, 3 settimane fa.

Stai vedendo 3 articoli - dal 1 a 3 (di 3 totali)
  • Autore
    Articoli
  • #3325

    jfet
    Partecipante

    Nel caso in cui, come me, vi trovate in difficoltà a capire e a usare il JSONStreamingParser questo codice può essere di aiuto per iniziare 🙂

    
    #include <Fishino.h>
    #include <JSONStreamingParser.h>
    #include <SPI.h>
    
    //Tra le virgolette inserite il json che volete far analizzare
    const char *json="...";
    //Creo l'oggetto parser
    JSONStreamingParser parser;
    //Creo la void che analizzerà il json
    void parserCallback(uint8_t filter, uint8_t level, const char *name, const char *value, void *obj) 
    {
      //Una volta che la void parserCallback ha trovato una delle seguenti informazioni la stampa a video
      
      //livello di nidificazione della parte del codice json che sta analizzando
      Serial.println(level);
      //Nome del dato json
      Serial.println(name);
      //Rispettivo valore di quel dato
      Serial.println(value);
    }
    
    void setup() 
    {
      Serial.begin(115200);
      delay(10);
      //Collego all'oggetto parser la void esterna parserCallback che analizzerà il codice json
      parser.setCallback(parserCallback, 0);
      parser.reset();
    }
    
    void loop() 
    {
      //(Massimo non uccidermi se sbaglio a spiegare questo punto)
    
      //json è un puntatore, quindi contiene l'indirizzo in memoria del primo carattere del nostro codice json, che di solito è una {
      //Con la seguente istruzione creiamo un altro puntatore al quale passeremo l'indirizzo del primo carattere del nostro codice json
      char *s = json;
      //Il seguente ciclo while sarà attivo fintanto che *s punterà a un carattere esistente (se non ho capito male si ferma quando incontra il carattere
      //\0 di terminazione)
      while(*s)
      {
        //In ogni ciclo spediamo il carattere puntato da s alla nostra void parserCallback e poi incrementiamo s stessa
        //In altre parole se stiamo analizzando {ciao} ciao s punterà prima alla { poi alla c, poi alla i, poi alla a, poi alla o e infine alla }
        //per poi fermarsi.
        //Normalmente il codice json è molto più articolato, ma ci penserà la void parserCallback ad analizzarlo e a sistemarlo.
        parser.feed(*s++);
      }
      delay(60000);
    }
    
    #3326

    Massimo
    Amministratore del forum

    Direi che hai capito perfettamente e la spiegazione è ottima 🙂

    #3327

    jfet
    Partecipante

    Bene, grazie mille 🙂
    Adesso vediamo cosa riesco a combinare…

Stai vedendo 3 articoli - dal 1 a 3 (di 3 totali)

Devi essere loggato per rispondere a questa discussione.