Давайте предположим, что вы получили ваш JSON в качестве ответа HTTP:
web::json::value json;
web::http::http_request request;
//fill the request properly, then send it:
client
.request(request)
.then([&json](web::http::http_response response)
{
json = response.extract_json().get();
})
.wait();
Обратите внимание, что никакой проверки ошибок не делается здесь, так что давайте предположим, что все работает нормально (--Если не смотрите в документации Casablanca и примеры) ,
Возвращенный json затем может быть прочитан через функцию at(utility::string_t)
. В вашем случае это массив (вы либо знаете, что или проверить его с помощью is_array()
):
auto array = json.at(U("devices")).as_array();
for(int i=0; i<array.size(); ++i)
{
auto id = array[i].at(U("id")).as_string();
auto type = array[i].at(U("type")).as_string();
}
При этом вы получите записи из ответа JSon хранится в строковых переменных.
В действительности, вы также можете проверить, имеет ли ответ соответствующие поля, например. через has_field(U("id"))
, и если да, проверьте, не являются ли записи не null
через is_null()
- в противном случае функция as_string()
выдает исключение.
Благодарю вас за хороший ответ! – barneytron
Отлично, работает! –
Ваш ответ правильный. – Prince