Я пытаюсь использовать библиотеку cJSON, написанную Dave Gamble, для чтения в следующем массиве JSON:
"items":
[
{
"name": "command",
"index": "X",
"optional": "0"
},
{
"name": "status",
"index": "X",
"optional": "0"
}
]
Считая документацию я нашел способы читать в отдельных объектах, но ничего не касалось массивов, и я не мог догадаться, как сделать это из приведенных примеров.
Вот что я пытаюсь:
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");
Я знаю, что это неправильно, и не только потому, что он не работает, но я не могу понять, как сделать это правильно.
Очевидно, мне нужно будет зациклить процесс чтения во всех элементах для каждого индекса массива. Я понятия не имею, как это сделать, потому что я не знаю, где я должен использовать индексы в этом коде, или если это даже правильный старт. Существует cJSON_GetArrayItem()
, но он принимает только число (предположительно индекс) и строку, чтобы указать, какое поле оно хочет.