Forum: Mikrocontroller und Digitale Elektronik cjson und Strings


von STM_Fan (Gast)


Lesenswert?

Hallo,

ich nutze gerade einen STM32F407 mit einem Wizfi360, um mir die 
Wetterdaten auf einem SSD1963 anzeigen zu lassen. Bis jetzt hole ich mir 
die Daten ab und
hole mir die Temperaturen aus dem Buffer:
1
int8_t Store_Weather_Data(void)
2
{
3
  cJSON *json = NULL;
4
  char text[]="main";
5
  json = cJSON_Parse(json_buffer);
6
  cJSON *weather = cJSON_GetObjectItem(json, "weather");
7
    cJSON *weather_id = cJSON_GetObjectItem(weather, "id");
8
    cJSON *weather_main = cJSON_GetObjectItem(weather, "main");
9
    cJSON *weather_description = cJSON_GetObjectItem(weather, "description");
10
    cJSON *weather_icon = cJSON_GetObjectItem(weather, "icon");
11
    cJSON *main_ = cJSON_GetObjectItem(json, "main");
12
    cJSON *temp = cJSON_GetObjectItem(main_, "temp");
13
    cJSON *temp_feel = cJSON_GetObjectItem(main_, "feels_like");
14
    cJSON *temp_min = cJSON_GetObjectItem(main_, "temp_min");
15
    cJSON *temp_max = cJSON_GetObjectItem(main_, "temp_max");
16
    cJSON *pressure = cJSON_GetObjectItem(main_, "pressure");
17
    cJSON *humidity = cJSON_GetObjectItem(main_, "humidity");
18
    cJSON *visibility = cJSON_GetObjectItem(main_, "visibility");
19
    Temp_Akt = temp->valuedouble;
20
    Temp_Feel= temp_feel->valuedouble;
21
    Temp_min= temp_min->valuedouble;
22
    Temp_max= temp_max->valuedouble;
23
    Humidity_Akt= humidity->valuedouble;
24
    Pressure_Akt= pressure->valuedouble;
25
    Visibility_Akt= visibility->valuedouble;
26
27
    uint16_t position_string=strstr(json_buffer,text);
28
return 0;
29
}

Mit den Zahlen klappts super, jedoch fehlt mir die Erfahrung, wie ich 
die Texte aus dem JSON lede, wie die "description" etc. Kann mir jemand 
dies erklären?

Gruß STM_Fan

: Bearbeitet durch Admin
von Johannes S. (Gast)


Lesenswert?

mit
1
CJSON_PUBLIC(char *) cJSON_GetStringValue(const cJSON * const item)
? cJSON rein, char* raus.
Und für die numerischen Werte gibts auch eine API Funktion: 
cJSON_GetNumberValue. Direkt in eine interne Struktur greifen ist 
üblicherweise nicht sauber.

von STM_Fan (Gast)


Lesenswert?

Hallo,

danke für die Antwort. Hast du vielleicht ein Beispiel für mich?

Gruß STM_Fan

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.