jsoncpp Formatierung Probleme
Ich bin mit jsoncpp und ich habe da ein problem mit, wie die json-Nachrichten formatiert sind, wenn Sie geschrieben werden mit einem der Autoren.
Beispiel:
root["name"] = "monkey";
std::cout << writer.write(root) << "\n";
Gibt mir etwas, formatiert wie dieses
{
"name" : "monkey"
}
Während ich eigentlich will:
{"name":"monkey"}
Ist, habe ich mich auf die Dokumentation und es gibt Erwähnungen von setIndentLength()
aber Sie erscheinen nicht in die Quelldateien, damit Sie vielleicht veraltet sind oder so etwas.
Trotzdem jemand weiß, wie dies zu tun?
- Sollten Sie zeigten uns, was
writer
war. Der Hinweis ist in seiner Art.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Als eine Erweiterung der cdunn2001 Antwort, es gibt keine Notwendigkeit, re-write default-Einstellungen (.settings_). Sie können einfach überschreiben 'Einzug' Wert StreamWriterBuilder-generator:
Wenn Sie Jsoncpp version 1.1 verwenden, können Sie
Json::FastWriter
stattJson::StyledWriter
oderJson::Writer
:FastWriter
,StyledWriter
,StyledStreamWriter
, undWriter
sind veraltet. VerwendenStreamWriterBuilder
, das schafft eineStreamWriter
mit einem etwas anderen API. Diese Art der Nutzung:settings
haben am Ende einen Unterstrich? 🙁Json::Value
bleibt abwärtskompatibel und Binär-kompatibel sind. Ja, es ist seltsam, aber es ist Unterstrichen die Tatsache, dass es eine Daten-Mitglied, nicht eine Funktion. Glaubst du, es war ein riesiger Fehler? Wir könnten hinzufügenValue& settings()
undValue const& settings() const
aufgelassen und direkten Zugriff. Aber für mich, der direkte Zugang ist viel einfacher. Die üblichen Gründe für das verstecken der Zugang gilt hier nicht, da haben wir sehr enge Grenzen für die Daten-member ändert sich sowieso.settings()
Methoden für diejenigen, die es vorziehen, dass. Kein problem. Froh, Sie genießen Sie die Bibliothek! Es ist Eigenschaft-Reich, aber ohne die Baumeister (kurzem) war es ein bisschen schwer zu pflegen, vor allem mit Binär-Kompatibilität.const
.FastWriter
undStyledWriter
; tut mir Leid zu hören, dass Sie veraltet sind (ich bin ein paar Versionen hinter). Sie sind sehr schnell und einfach zu bedienen, so lange, wie Sie nicht brauchen eine Menge von Konfigurationsmöglichkeiten .... das weiß ich nicht. 🙂 Zum einspannen JSON-out auf den Draht oder Strahlen Sie zu config-Dateien und/oder debug-Protokolle, die zwei sind perfekt.operator<<(ostream)
oft genug.const
und einfach Verweise, zu zwingen, die Leser zu überprüfen, die API. Casting existiert in C++, das ist, warum ich sagen, dass Sie die falsche Sprache. In der Tat, Sie scheinen zu behaupten, dass all Dokumentation ist irreführend. Die Gewohnheit, Hervorhebung Nebenwirkungen -- in der Dokumentation oder source-code-ist weder gefährlich noch schlecht. Im Gegenteil, es ist immer eine hilfreiche Erinnerung. Vielleicht sollten wir das weiter diskutieren dieser point anderswo?