Предположим, вы получили свой 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()
выдает исключение.
person
davidhigh
schedule
22.10.2015