Close

Odpověď na: Arduino Json a analyza stringu

Úvodní stránka Fórum Vaše projekty Arduino Arduino Json a analyza stringu Odpověď na: Arduino Json a analyza stringu

#11685
Zbyšek Voda
Správce

Podle JSON je položka „Sensors“ pole, takže vám chybí ještě jedna indexace.
root["Sensors"][0]["Temp-voda"]

Ještě je otázkou, jestli bude pořadí senzorů v poli vždy takovéto, nebo se bude měnit. V tom případě byste musel nějakým způsobem projít celé pole a najít tu položku, která má atribut „Temp-voda“.

Napadá mě jedno zlepšení – nemůžete změnit tvar toho JSON objektu? Takto je to trochu krkolomné. Mohl by vypadat třeba takto a práce s ním by byla jednodušší:

{
...
Sensors: {
    Temp-voda: 25,
    WiFi: -60,
    ...
}
}

Potom už by přečtení položky Temp-voda vypadalo tak, jak to máte v kódu.

Pokud by přidání indexu nepomohlo, máte ještě možnost projít JSON jen jako text, najít výskyt řetězce – například „Temp-voda“ a potom víte, že za dva znaky začíná hodnota.

Také by možná byla možnost se JSONu úplně vyhnout. Pokud víte, kolik celkem bude senzorů a nepotřebujete jejich počet nějak dynamicky měnit, mohl byste postupovat tak, že si určíte přesné pořadí, v jakém budete hodnoty odesílat a oddělíte je třeba středníkem. Jakmile odešlete všechny hodnoty, tak je zakončíte znakem nového řádku.

Tedy jedna sada měření může vypadat třeba následovně:

25;-60;1.80

a vy budete vědět (předem si určíte), že první hodnota odpovídá teplotě vody, druhá wifi, třetí spiral. Také budete vědět, že první dvě hodnoty jsou typu int, takže he vyčtete funkcí parseInt, třetí float, použijete tedy funkci parseFloat.

Pravděpodobně vám ale JSON chodí někde z webu, takže si tvar vybírat.

Jaký projekt stavíte? 🙂