{
"kind": "youtube#channel",
"statistics": {
"viewCount": "30177125",
"commentCount": "313",
"subscriberCount": "251966",
"videoCount": "301"
}
}
]
}
Как можно видеть, items - это массив элементов, т.к. он содержит скобки []. Внутри есть объект statistics, а внутри него нужное нам поле subscriberCount.
Код чтения Json будет выглядеть вот так:
DynamicJsonBuffer jsonBuffer(16*1024);
JsonObject& parsed = jsonBuffer.parseObject(json);
if (parsed.success()) {
JsonArray& items = parsed["items"];
if (items.size()> 0) {
JsonObject& statistics = items[0]["statistics"];
long subscriberCount = statistics["subscriberCount"];
Serial.print("Number of subscribers: ");
Serial.println(subscriberCount);
}
} else {
Serial.println("Json parsing error");
}
Мы создаем объект типа JsonArray, и если он не пуст, обращаемся к элементу с первым номером (в Си массивы нумеруются с нуля, items[0] это первый элемент).
Задача решена! Код полностью выглядит так:
#include <WiFi.h>
#include <HTTPClient.h>
#include <ArduinoJson.h>