JSONCPP hat einen Schreiber, aber alles, was es zu tun scheint, ist, Informationen aus dem Parser zu bekommen und sie dann in eine Zeichenfolge oder einen Stream auszugeben. Wie kann ich neue Objekte, Arrays, Werte, Strings usw. ändern oder erstellen und in die Datei schreiben?JSONCPP Schreiben in Dateien
Antwort
AFAICT, Sie erstellen Objekte des Typs Json :: Value, der für alle JSON-Datentypen sorgt und das Ergebnis an einen Json :: Writer (einen seiner abgeleiteten Typen, um genau zu sein) oder einfach zu einem Strom.
Z. B .: ein Array von drei ganzen Zahlen in eine Datei schreiben:
Json::Value vec(Json::arrayValue);
vec.append(Json::Value(1));
vec.append(Json::Value(2));
vec.append(Json::Value(3));
std::cout << vec;
Zuerst müssen Sie die gewünschte JSON::Value
erstellen. Sie sollten sich alle Konstruktoren ansehen (first). Informationen zum Erstellen der erforderlichen Hierarchien finden Sie unter append
und den Operator [] overloads; Für beide Arrays gibt es Überladungen für die Objekte und string keys.
Eine Möglichkeit, den JSON-Wert zurück zu schreiben, ist die Verwendung von StyledStreamWriter::write
und ofstream
.
Siehe cegprakashs Antwort, wie man es schreibt.
Ja, ich dachte darüber nach, nachdem ich Marcelos Antwort gelesen hatte. Es klappt. – Yelnats
@Yelnats also, warum kennst du es nicht als eine angemessene Antwort? –
'StyledStreamWriter' ist veraltet. Wenn Sie eine Anpassung benötigen, verwenden Sie ['StreamWriterBuilder'] (http://open-source-parsers.github.io/jsoncpp-docs/doxygen/class_json_1_1_stream_writer_builder.html). Oder folgen Sie einfach den anderen Antworten hier. – cdunn2001
#include<json/writer.h>
Code:
Json::Value event;
Json::Value vec(Json::arrayValue);
vec.append(Json::Value(1));
vec.append(Json::Value(2));
vec.append(Json::Value(3));
event["competitors"]["home"]["name"] = "Liverpool";
event["competitors"]["away"]["code"] = 89223;
event["competitors"]["away"]["name"] = "Aston Villa";
event["competitors"]["away"]["code"]=vec;
std::cout << event << std::endl;
Ausgang:
{
"competitors" :
{
"away" :
{
"code" : [ 1, 2, 3 ],
"name" : "Aston Villa"
},
"home" :
{
"name" : "Liverpool"
}
}
}
Das sieht wirklich gut aus. Was ist mit dem Hinzufügen von Klassen anstelle von int mit der .append-Methode? – malber
#include <json.h>
#include <iostream>
#include <fstream>
void main()
{
std::ofstream file_id;
op_file_id.open("file.txt");
Json::Value value_obj;
//populate 'value_obj' with the objects, arrays etc.
Json::StyledWriter styledWriter;
file_id << styledWriter.write(value_obj);
file_id.close();
}
Es ist einfacher zu verstehen, wenn Sie Ihre Antwort und nicht nur die Postleitzahl erklären. – SuperBiasedMan
- 1. Jsoncpp Float Werte falsch schreiben
- 2. JsonCpp Schreiben zurück in die Json Datei
- 3. In viele Dateien schreiben
- 4. Schreiben in Dateien
- 5. Anmutige Fehlerbehandlung in C++ - Bibliothek - Jsoncpp
- 6. Buildfehler in JSONCPP (Visual Studio 2010)
- 7. JSONCPP Build mit Visual Studio 2010
- 8. Schreiben in Dateien mit MPI
- 9. Dateien nicht in Android schreiben
- 10. Gleichzeitiges Schreiben in mehrere Dateien
- 11. Schreiben in Excel-Dateien in C#
- 12. Wie zu beheben JsonCPP Fehler von getMemberNames()?
- 13. Erstellen Sie leere json Array mit jsoncpp
- 14. Leistungsprobleme beim Schreiben in große Dateien?
- 15. Dateien in S3 über Java schreiben
- 16. Sortieren und Schreiben von Dateien in Python
- 17. lesen schreiben mehrere Dateien in C++
- 18. Schreiben Sie .kml-Dateien in iOS
- 19. Schreiben von C# Quellcode in Dateien
- 20. Lesen (Schreiben) von Dateien in C#
- 21. Schreiben in XML-Dateien auf Servern
- 22. Schreiben Strings binäre Dateien in C
- 23. PHP-Datei schreiben - 0x00 erscheint in Dateien
- 24. Schreiben in mehrere Dateien mit Scrapy
- 25. Lesen von und Schreiben in CSV-Dateien
- 26. MSBuild - Escape-Zeichen in Dateien schreiben
- 27. FileStream Vs. System.IO.File.WriteAllText beim Schreiben in Dateien
- 28. Schreiben mehrerer Dateien aus SqlDataReader
- 29. C# lesen/schreiben .xlsm Dateien
- 30. Python schreiben binäre Dateien, Bytes
Aber ich will es in die .json Datei schreiben. – Yelnats
Verwenden Sie dann einen 'ofstream' anstelle von' cout'. –
Yelnats, dann pipe es in eine Datei anstelle von std :: cout. – TimZaman