我在Visual C ++ 2013中有一个c ++应用程序,它使用cpprestsdk从服务器获取信息。它工作正常(例如here)
现在,我正在使用外部第三方API,此API有一个返回字符串的方法,如下所示:
{"result":{"data":[{"PetId":"Pet1","PetName":"Name1","PetCategory":"1"},{"PetId":"Pet2","PetName":"Name2","PetCategory":"2"},{"PetId":"Pet3","PetName":"Name3","PetCategory":"3"}],"code":"200","msg":"Operation succeeded"}}
如何使用cpprestsdk将此字符串转换为web :: json,以便迭代" pet collection"?
答案 0 :(得分:1)
如果你真的坚持这样做,你必须先将字符串放入REST SDK的stringstream_t(至少据我所知),所以代码看起来像这样:
web::json::value from_string(std::string const &input) {
web::utility::stringstream_t s;
s << input;
web::json::value ret = json::value::parse(s);
return ret;
}
如果有选择,我会使用CPPRESTSDK来完成REST部分,但使用nlohmann JSON库来处理任务的JSON部分。有了它,任务就更简单了:
using json = nlohmann::json;
json parsed_data = json::parse(input);
使用nlohmann库迭代数据变得非常简单:
for (auto const &item : parsed_data["result"]["data"])
std::cout << "Name: " << item["PetName"] << "\t" <<
"ID: " << item["PetId"] << "\n";