こんにちは、CURL の使用中に API から取得している json 文字列から特定の値を保存しようとしています。
現在のコード:
#include <boost/property_tree/json_parser.hpp>
#include <boost/property_tree/ptree.hpp>
#include <string>
#include <curl/curl.h> // -lcurl
#include <iostream>
using namespace std;
using namespace boost;
using boost::property_tree::ptree;
using boost::property_tree::read_json;
void curl_query() {
CURL *curl;
CURLcode res;
string readBuffer;
curl = curl_easy_init();
if(curl) {
curl_easy_setopt(curl, CURLOPT_URL, query_id.c_str());
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteCallback);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &readBuffer);
res = curl_easy_perform(curl);
curl_easy_cleanup(curl);
cout << readBuffer << endl; // json string here - - work's, just messy
}
ptree pt;
read_json(readBuffer, pt);
// so here I'd like to extract a specific part
string jsonBuffer = pt.get_child<std::string>("current.price");
cout << endl << jsonBuffer << endl;
}
すべての値を取得するために使用するいくつかの例を見てきましたBOOST_FOREACH()
が、私の場合、参照用にcurrent.priceに格納されている値は 1 つだけです:
https://gist.github.com/mloskot/1509935
与えられたエラー:
‘In file included from /usr/include/boost/property_tree/json_parser.hpp:10:0,’
さらに多くのテキストがあり、明らかなエラーは見られませんが、現在のコードには何か問題があります。
注意:read_json
( std::string または file から読み取るwrite_json
) を(attempts to write file) に置き換えると、正常にコンパイルされますが、ファイルを作成/書き込みできないため、コア ダンプが取得されます。私はjsonを書きたくないので、現在私のコードに何が問題なのかわかりません。
提案、リンク、ヒント/ヒント - 何でも大歓迎です。