quote
リストから日付、クローズ、ボリュームを分離して、カンマ区切りで1つのテキストファイルに保存したいファイルがあるyahoo finance jsonファイルを持っています。これは私のjsonスクリプトです。jsoncppを使ってリスト内の特定の値をtxtに保存する方法は?
Json::Value root; // will contains the root value after parsing.
Json::Reader reader;
bool parsingSuccessful = reader.parse(YahooJson, root);
if(not parsingSuccessful)
{
// Report failures and their locations
// in the document.
std::cout<<"Failed to parse JSON"<<std::endl
<<reader.getFormatedErrorMessages()
<<std::endl;
return 1;
}else{
std::cout<<"\nSucess parsing json\n"<<std::endl;
std::cout << root<< std::endl;
std::cout <<"No of Days = "<< root["query"]["count"].asInt() << std::endl;
//below for loop returns an error
for (auto itr : root["query"]["result"]["quote"]) {
std::string val = itr.asString();
}
}
私は、JSONの値と印刷root["query"]["count"].asInt()
を取り出すにsuccedすることができましたが、私はリスト値(quote
)に行くとき、私は引用符(query-> result->引用符)を反復処理する方法を知らない取得します日付、クローズ、ボリュームの値は?
EDIT
はまた、出力は日だった場合にのみ機能します
const Json::Value& quotes = root["query"]["results"]["quote"];
for (int i = 0; i < quotes.size(); i++){
std::cout << " Date: " << quotes[i]["Date"].asString();
std::cout << " Close: " << quotes[i]["Close"].asFloat();
std::cout << " Volume: " << quotes[i]["Volume"].asFloat();
std::cout << std::endl;
}
この方法を試してみました。近いと音量出力の場合、それはあなたが使用しているJSONライブラリ指定していない、と私は知って十分ヤフーファイナンスのデータを知らないランタイムエラーメッセージが表示され、また、このエラー
what() type is not convertible to string
のようになります。使用しているJSONライブラリを明確にすることはできますか? 'Json :: Value'と' Json :: Reader'を定義しているライブラリはどれですか?アクセスしようとしているJSONレコードのスニペットを投稿して、JSON配列かそれ以外のものかを明確にするのに役立ちます。 –
編集した2番目のメソッドを試してみると、 'what:):値がfloatに変換できません.'これは、リンクされたサンプルJSONデータの数値リテラルではなく、CloseとVolumeのデータが文字列として表示されるので意味があります。丸めに関連する理由は、別の方法で解析することをお勧めします。 doubleが大丈夫なら、scanfや文字列を使って文字列から変換することができます。 –