Mihai Popa Postat Septembrie 30, 2018 Partajează Postat Septembrie 30, 2018 (editat) Salut. Am nevoie sa extrag cateva valori din urmatorul format de string: {"status":[{"now":1538310812995}],"bgs":[{"sgv":"198","trend":4,"direction":"Flat","datetime":1538310503745,"bgdelta":0,"battery":"65","iob":"0","cob":0}],"cals":[]} Folosesc pentru asta un ESP8266 si un display lcd 2x16. Acum, ma intereseaza urmatoarele informatii din acest string: sgv=198 - aici, numarul 198 poate sa ia valori intre 30 si 400 direction=Flat - aici rezultatul poate avea si alte valori: Flat, DoubleUp, DoubleDown, ... Practic, valoarea de dupa sgv si cea de dupa direction sunt variabile si de aceea nu pot folosi string.substring(pos1,pos2). Orice ajutor, idee este binevenita. Va multumesc. Editat Septembrie 30, 2018 de Mihai Popa Link spre comentariu
Bandi Szasz Postat Septembrie 30, 2018 Partajează Postat Septembrie 30, 2018 Salut. Acela este un string in format Json, exista librarii pt Arduino care pot procesa acel string si obtii un object Json si de acolo e foarte usor sa obtii oricare dintre variabile. https://github.com/bblanchon/ArduinoJson 2 Link spre comentariu
mars01 Postat Septembrie 30, 2018 Partajează Postat Septembrie 30, 2018 String-ul tau este de fapt o structura de date organizata ca un dictionar complex. Pentru a iti face o idee "string-ul" tau arata mai clar asa: { "status":[{"now":1538310812995}], "bgs":[ { "sgv":"198", "trend":4, "direction":"Flat", "datetime":1538310503745, "bgdelta":0, "battery":"65", "iob":"0", "cob":0 } ], "cals":[] } Cum folosesti un ESP8266, poti instala MicroPython si problema ta se rezolva foarte usor asa: data_struct = { "status":[{"now":1538310812995}], "bgs": [ { "sgv":"198", "trend":4, "direction":"Flat", "datetime":1538310503745, "bgdelta":0, "battery":"65", "iob":"0", "cob":0 } ], "cals":[] } for key in data_struct: if key == "bgs": for el in data_struct[key]: for key_in_bgs in el: if key_in_bgs == "sgv": sgv_value = el[key_in_bgs] if key_in_bgs == "direction": dir_value = el[key_in_bgs] print("SGV_value is: %s ||| Direction is: %s" % (sgv_value, dir_value)) Rezultatul dupa rulare este: $python main.py SGV_value is: 198 ||| Direction is: Flat Link spre comentariu
Mihai Popa Postat Octombrie 1, 2018 Autor Partajează Postat Octombrie 1, 2018 Salut, "Acela este un string in format Json, exista librarii pt Arduino care pot procesa acel string si obtii un object Json si de acolo e foarte usor sa obtii oricare dintre variabile. https://github.com/bblanchon/ArduinoJson"..mie nu imi merge, sau nu stiu cum sa fac sa citest datele dintr-o matrice, sin acel sir json. Am incercat exemplul de aici, dar nu seamana cu ce am eu nevoie: https://techtutorialsx.com/2016/08/06/esp8266-parse-json-arrays/ Am incercat si acest asistent: https://arduinojson.org/v5/assistant/, nu merge... Puteti pune un exemplu despre cum pot citi datele dintr-o matrice, ca cea din sirul meu json? Multumesc, Mihai Exemplu_1.ino Link spre comentariu
Postări Recomandate
Creează un cont sau autentifică-te pentru a adăuga comentariu
Trebuie să fi un membru pentru a putea lăsa un comentariu.
Creează un cont
Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!
Înregistrează un nou contAutentificare
Ai deja un cont? Autentifică-te aici.
Autentifică-te acum