私はCasablanca、cpprestsdkを使用してVisual Studio 2015 ProfessionalのC++でREST APIを使用しています。ここでは、APIを使用してJSONとしてレスポンスを解析する簡単な例を開発しようとしています。使用しているURLは、実際にAPIに送信されたすべてのパラメータを返します。私はCasablanca、C++のJSONから値を取得できません
私はAPIをヒットし、レスポンスも得て、応答から正常にjsonを抽出しました。しかし、私がjsonから任意のキーで値を読み取ろうとすると、クラッシュします。したがって、私はそのキーが利用可能かどうかをチェックし、常にjsonにはフィールドがないと言っています。一例として、データ、すなわちjsonを印刷した。キー/フィールド "name"を持っていますが、has_field
でチェックするとfalseを返します。
助けてください。
完全なコードは以下の通りです:
json::value postData;
postData[L"name"] = json::value::string(L"Joe Smith");
postData[L"sport"] = json::value::string(L"Baseball");
http_client client(L"https://httpbin.org/post);
http_request request(methods::POST);
request.set_body(postData);
client.request(request).then([](web::http::http_response response) {
json::value j = response.extract_json().get();
json::value data = j.at(U("data"));
std::wcout << "Json : " << data;
// Prints "{\"name\":\"Joe Smith\",\"sport\":\"Baseball\"}"
if (data.has_field(U("name"))) {
std::cout << "Name Found";
}
else {
std::cout << "Name key not Found";
}
});