如何将cpr的get响应转换为json对象?

时间:2019-05-15 18:17:43

标签: c++ rest nlohmann-json

我一直在寻找一个易于理解的库,该库以C ++发出HTTP REST请求,然后遇到了CPR。我成功地从服务器获得了响应,但是我发现很难访问返回的JSON对象。

API获取请求:

auto r = cpr::Get(cpr::Url{ "https://example.net/api/token" },
        cpr::Parameters{ {"username", login}, {"password", password}, 
  {"hwid", "TestChecker"}, {"obt", "1"}});
    r.status_code;                 
    r.header["application/json"];      
    r.text;

我试图将r.text传递到nlohmann::json j = r.text;并访问我想要的特定对象,例如string xx = j["token"]; 如预期的那样,它引发了一个错误。

如果有人能告诉我如何实现我未能做到的目标,我将非常感激。

编辑:添加了引用

CPR:https://www.codeproject.com/Articles/1244632/Making-HTTP-REST-Request-in-Cplusplus

nlohmann / json:https://github.com/nlohmann/json

1 个答案:

答案 0 :(得分:1)

我确实使用了一些代码,最后弄清楚了。 基本上,我想做的是将“ JSON字符串”转换为JSON对象。 我是通过使用方法nlohmann::json::parse();

实现的
Json j = Json::parse(r.text);
string xx = j["token"];