2

我在 Visual C++ 2013 中有一个 c++ 应用程序,它使用 cpprestsdk 从服务器获取信息。它工作正常(这里有一个例子)

现在,我正在使用外部第三方 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 以遍历“宠物集合”?

4

1 回答 1

3

如果你真的坚持这样做,你必须先将字符串放入 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";
于 2018-02-27T23:05:17.270 回答