您好,我正在尝试从使用 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;
}
我一直在查看一些用于获取所有值的示例,但是在我的情况下, current.priceBOOST_FOREACH()
中只有 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 或文件中读取)编译得很好,但由于无法创建/写入文件而获得核心转储。不过我不想写 json,所以我不确定我的代码目前有什么问题。write_json
任何建议、链接、提示/提示 - 非常感谢。