Scrittura stringa json

di Anonimizzato28705 il
10 risposte
Salve, mi servirebbe aiuto nella compilazione del body di un http post contenente una stringa JSON.
Il mio dubbio sta nello scrivere correttamente il body (non riesco a capire come dovrei fare a “fornire al server” un dato di temperatura variabile che varia ogni volta che io invio un valore)
Ho convertito il dato di temperatura da float a stringa tramite una sprintf utilizzando la variabile datorilevato ma non riesco a formulare correttamente il body della post.
Più precisamente io ho scritto questo:
    
const char  body[] = "{ \"temperature\": datorilevato}";

Come potrei fare a fare in modo che l’ipotetico server “capisca” che in datorilevato deve ricevere un valore che può cambiare ogni volta che io invio la richiesta? È giusto cosi o andrebbe scritto tra virgolette e/o / o in altri modi?

10 Risposte

  • Ilprincipiante ha scritto:


    Il mio dubbio sta nello scrivere correttamente il body (non riesco a capire come dovrei fare a “fornire al server” un dato di temperatura variabile che varia ogni volta che io invio un valore)
    Ho convertito il dato di temperatura da float a stringa tramite una sprintf utilizzando la variabile datorilevato ma non riesco a formulare correttamente il body della post.
    Dovresti comporre un'ulteriore stringa .... a quel punto non conviene un singolo sprintf per comporre TUTTO il body inserendo dove/come serve i valori con i %f, %d ecc... ??
  • Grazie Andbin! Ma cosa intendi con "comporre tutto il body" nella sprintf? nel senso che dovrei scrivere per esempio
    char stringa [100]
    sprintf (stringa, "temperature: %.2f", temp);
    const char body[] = "{stringa}";

    in modo che la sprintf inserisca in stringa sia la parola temperature sia il dato, e a questo punto inserire nel body solo stringa? o così facendo invierei al server solamente la parola "stringa" e non ciò che ho dichiarato nella sprintf?
  • Ilprincipiante ha scritto:


    Ma cosa intendi con "comporre tutto il body" nella sprintf?

    in modo che la sprintf inserisca in stringa sia la parola temperature sia il dato, e a questo punto inserire nel body solo stringa? o così facendo invierei al server solamente la parola "stringa" e non ciò che ho dichiarato nella sprintf?
    Sono parecchio "arruginito" del C (non lo uso dal 2008!) ma se non sbaglio a scrivere ... qualcosa del tipo, es:
    int dato1 = //........
    float dato2 = //........
    char json[50];
    
    sprintf(json, "{ \"dato1\": %d, \"dato2\": %f }", dato1, dato2);
    P.S. gli spazi si possono anche compattare, purché venga poi fuori una sintassi JSON corretta.

    Non mi pare complicato .. no?
  • Grazie mille! Quindi ora al body se ho capito bene dovrei passare solo la stringa json, sai dirmi per caso in che modo dovrei farlo?
    ovvero scrivere
    const char body[] = json;
    potrebbe essere giusto?
  • Ma perché non scrivi nella sezione C?
  • Ilprincipiante ha scritto:


    Grazie mille! Quindi ora al body se ho capito bene dovrei passare solo la stringa json, sai dirmi per caso in che modo dovrei farlo?
    ovvero scrivere
    const char body[] = json;
    potrebbe essere giusto?
    Guarda che dopo il sprintf che ho mostrato, quel char json[50]; contiene GIÀ tutto il body. Quali dubbi ci sarebbero a riguardo?
  • andbin ha scritto:


    Ilprincipiante ha scritto:


    Grazie mille! Quindi ora al body se ho capito bene dovrei passare solo la stringa json, sai dirmi per caso in che modo dovrei farlo?
    ovvero scrivere
    const char body[] = json;
    potrebbe essere giusto?
    Guarda che dopo il sprintf che ho mostrato, quel char json[50]; contiene GIÀ tutto il body. Quali dubbi ci sarebbero a riguardo?
    Il mio dubbio sta nel fatto che questo body ora deve essere inviato al server. Io ho capito che nella json ora ci sono i valori del body, ma se non metto il vero e proprio body nella mia richiesta come possono arrivare i valori al server? Probabilmente mi sta sfuggendo qualcosa
  • Ilprincipiante ha scritto:


    Il mio dubbio sta nel fatto che questo body ora deve essere inviato al server. Io ho capito che nella json ora ci sono i valori del body, ma se non metto il vero e proprio body nella mia richiesta come possono arrivare i valori al server? Probabilmente mi sta sfuggendo qualcosa
    Ma io in questo momento NON posso sapere con quale funzione/API devi inviare il JSON (precisalo magari). Quella variabile json contiene una stringa ben formata secondo il C cioè con un '\0' alla fine. Stop. Cosa farci devi saperlo tu (e ripeto, chiariscilo, così magari vediamo ..)
  • Ilprincipiante ha scritto:


    andbin ha scritto:


    Ilprincipiante ha scritto:


    Grazie mille! Quindi ora al body se ho capito bene dovrei passare solo la stringa json, sai dirmi per caso in che modo dovrei farlo?
    ovvero scrivere
    const char body[] = json;
    potrebbe essere giusto?
    Guarda che dopo il sprintf che ho mostrato, quel char json[50]; contiene GIÀ tutto il body. Quali dubbi ci sarebbero a riguardo?
    Il mio dubbio sta nel fatto che questo body ora deve essere inviato al server. Io ho capito che nella json ora ci sono i valori del body, ma se non metto il vero e proprio body nella mia richiesta come possono arrivare i valori al server? Probabilmente mi sta sfuggendo qualcosa
    Perché ignori le domande?
Devi accedere o registrarti per scrivere nel forum
10 risposte