Ich habe yahoo finance json Datei, von der ich Datum, Schließen und Volumen aus der quote
Liste isolieren und speichern Sie es in der gleichen Reihenfolge mit einem Komma Trennung in einer einzigen Textdatei. Das ist mein Json-Skript.Wie speichere ich mit jsoncpp bestimmte Werte in einer Liste in 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();
}
}
konnte ich die json Werte succed beim Abrufen und drucken root["query"]["count"].asInt()
aber wenn ich auf die Liste Werte gehen (quote
) Ich weiß nicht, wie durch Zitat (query-> result-> Zitat) iterieren erhalten Datums-, Schluss- und Volumenwerte?
EDIT
auch versucht, diese Methode
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;
}
Es funktioniert nur, wenn die Ausgabe Datum war. Für enge und Lautstärke beendet es mit einer Laufzeitfehlermeldung und auch diesen Fehler
what() type is not convertible to string
aussehen würde Können Sie klären, welche JSON-Bibliothek Sie verwenden? Welche Bibliothek importieren Sie, die 'Json :: Value' und' Json :: Reader' definiert? Es würde auch hilfreich sein, wenn Sie ein Snippet des JSON-Datensatzes veröffentlichen, auf den Sie zugreifen möchten, damit klar ist, ob es sich um ein JSON-Array oder etwas anderes handelt. –
Wenn ich Ihre bearbeitete zweite Methode ausprobiere, bekomme ich 'what(): Wert ist nicht in float umwandelbar. 'Dies ist sinnvoll, da die Daten für Close und Volume in den verknüpften Beispiel-JSON-Daten als Zeichenfolgen und nicht als numerische Literale dargestellt werden. Es gibt Gründe im Zusammenhang mit Runden, die Sie vielleicht lieber anders analysieren. Wenn doubles in Ordnung sind, sollten Sie in der Lage sein, es aus einer Zeichenfolge mit scanf oder einem Zeichenfolge-Stream zu konvertieren. –