Как проанализировать данные JSON из cpprestsdk
return client.request(methods::GET).then([](http_response response) -> pplx::task<json::value>
{
if (response.status_code() == status_codes::OK)
{
std::cout << "status ok";
response.headers().set_content_type(L"application/json");
return response.extract_json();
}
// Handle error cases, for now return empty json value...
std::cout << "get json data";
return pplx::task_from_result(json::value());
})
.then([](pplx::task<json::value> previousTask)
{
try
{
std::cout << "parse json data";
const json::value& v = previousTask.get();
utility::string_t jsonval = v.serialize();
json::value root;
// DisplayJSONValue(v);
wcout << jsonval;
// wcout<<jsonval.data.id;
// Perform actions here to process the JSON value...
//std::cout << v;
//IterateJSONValue();
}
catch (const http_exception& e)
{
// Print error.
wostringstream ss;
ss << e.what() << endl;
wcout << ss.str();
}
});
}
Пожалуйста, помогите мне. Спасибо заранее. Я получил ответы API. Но я не могу разобрать ответы. Я могу позвонить и принять ответы API. Но не могу разобрать ответы. Любые шаги для разбора данных JSON, пожалуйста, помогите мне.
МОИ API ОТВЕТЫ
{"Смещение": 0, "строка":[{"ID": "1f960b4aa0a7f4e41868d6d9d513ecf8", "ключ": "Абдалла Elkady CPA","значение":["c1d148.aa.ss.com","53fbbfd1aae9f3b82c89235b8e6bcac28e7a06da1b8aa3ab9164555e543b6f8f"]},{"идентификатор": "7ba219914965b79a4a2d9f27d06f1644", "ключ":"callvox","значение":["a03096.aa.ss.com","e98cdb61030376461cd75108d082b9e8c5f024b068a3e734744b974442e1cd26"]},{"идентификатор": "6ac7f0a7c4affee980a4d5b9b95d6b44"," клавиша ":"cloudgen","значение":["ce39a9.ss.ss.com","f9d507e0ad4b70dbe51d900c2a1aa730eae57d042e805ccf54e153879abe4003"]}
3 ответа
try
{
std::cout << "parse json data";
const json::value& v = previousTask.get();
utility::string_t jsonval = v.serialize();
// DisplayJSONValue(v);
wcout << jsonval;
auto array = v.at(U("rows")).as_array();
for (int i = 0; i<array.size(); ++i)
{
auto id = array[i].at(U("id")).as_string();
std::wcout <<"\n"<< id;
auto key = array[i].at(U("key")).as_string();
std::wcout <<"\n"<< key;
auto array2=array[i].at(U("value")).as_array();
std::wcout << array2[0];
std::wcout << array2[1];
}
}
catch (const http_exception& e)
{
// Print error.
wostringstream ss;
ss << e.what() << endl;
wcout << ss.str();
}
вышеуказанные коды работают для меня. Я получил решения.
Как насчет этого?
const json::value& v = previousTask.get();
auto a = v[L"rows"].as_array();
for (auto i= a.begin();i!=a.end();i++)
{
auto id = (*i)[L"ID"]
}
Попробуй это
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();
}