Ja próbuje użyć biblioteki cJSON, napisany przez Dave Gamble, aby odczytać w następujący JSON tablicy:Korzystanie cJSON czytać w tablicy JSON
"items":
[
{
"name": "command",
"index": "X",
"optional": "0"
},
{
"name": "status",
"index": "X",
"optional": "0"
}
]
Od czytania jego documentation, znalazłem sposoby odczytu w poszczególnych obiektach, ale nic w odniesieniu do tablic, a ja nie byłem w stanie domyślić się, jak to zrobić z podanych przykładów.
Oto co usiłuję:
cJSON* request_json = NULL;
cJSON* items = cJSON_CreateArray();
cJSON* name = NULL;
cJSON* index = NULL;
cJSON* optional = NULL;
request_json = cJSON_Parse(request_body);
items = cJSON_GetObjectItem(request_json, "items");
name = cJSON_GetObjectItem(items, "name");
index = cJSON_GetObjectItem(items, "index");
optional = cJSON_GetObjectItem(items, "optional");
wiem, że to jest złe, i nie tylko dlatego, że nie działa, ale nie mogę dowiedzieć się, jak to zrobić dobrze.
Oczywiście będę musiał zapętlić proces odczytu we wszystkich pozycjach dla każdego indeksu tablicy. Nie mam pojęcia, jak mam to zrobić, ponieważ nie wiem, gdzie powinienem używać indeksów w tym kodzie, lub jeśli jest to nawet właściwy początek. Istnieje cJSON_GetArrayItem()
, ale pobiera on tylko liczbę (prawdopodobnie indeks) i brak łańcucha, aby wskazać, które pole chce.
Jeżeli wartość „pozycji” jest tablicą, wydaje mi się, powinno być indeksowania tablicy gdzieś tam. Wtedy da ci z powrotem "obiekt", który możesz następnie wyszukać za pomocą klucza. –
(Zwróć uwagę, że pomyłkowo pominąłeś otaczający '{}', gdy cytowałeś JSON. '{}' Oznacza "obiekt", a bez niego powyższy tekst jest nieprawidłowy JSON.) –
To nie było tak, jak zostało zdefiniowane. w kompilatorze, po prostu pokazano go jako przykład – Nealon