C ++ boost property_tree将json存储到字符串

时间:2013-05-24 17:50:36

标签: c++ json boost curl boost-propertytree

您好我正在尝试存储我在使用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()来获取所有值的示例,但在我的情况下,只有1个值存储在 current.price 中以用于referance: https://gist.github.com/mloskot/1509935

给出错误:

‘In file included from /usr/include/boost/property_tree/json_parser.hpp:10:0,’

还有更多的文字,我看不出明显的错误,但我当前的代码有问题。

请注意:read_json替换write_json从std :: string或文件中读取)(尝试写入文件)编译正常,但由于无法创建/写入文件而获得核心转储。我不想写json,所以我不确定我的代码当前有什么问题。

任何建议,链接,提示/提示 - 非常感谢。

0 个答案:

没有答案