Webservices in C++: JSON-Daten (de)serialisieren mit Bibliothek PropertyTree
Die meisten Webanwendungen tauschen mit ihrem Backend Daten im JSON-Format aus. In C++-Code gelingt das mit der Boost-Bibliothek PropertyTree. Ein Leitfaden.
Statt nur ein monströses "Hallo, Welt"-Programm zu sein, soll der mithilfe von Boost.Beast programmierte Webservice aus Teil 1 dieser kleinen Artikelserie etwas Sinnvolles tun: beliebig große Zahlen darauf prüfen, ob sie prim sind, und mit einer Aussage über die Primeigenschaft sowie gegebenenfalls den Primfaktoren antworten. Wie der Webservice die empfangenen Daten einliest und seine Ergebnisse für die Übertragung vorbereitet, zeigt dieser zweite Teil.
Zum Übertragen strukturierter, zusammengesetzter Daten ist das JSON-Format (JavaScript Object Notation) eine gute Wahl. Daten in diesem Format bestehen aus menschenlesbaren, UTF-8-kodierten Zeichenfolgen. Zwar gibt es zum Datenaustausch zwischen Client und Server effizientere Formate, zum Beispiel Protobuf (Protocol Buffers) von Google, aber noch baut die Mehrheit der Webanwendungen auf das gute, alte JSON.
Wenn man eh schon mit dem Boost-Framework unterwegs ist, bietet es sich an, darin nach JSON-Unterstützung zu suchen. Und man findet sie auch, nämlich in der Bibliothek Boost.PropertyTree. In einem boost::property_tree::ptree kann man beliebig tief verschachtelte Daten fast jeden Typs speichern, die auf jeder Ebene über Schlüssel referenziert werden können, genau so, wie man es von JSON kennt. Die Schlüssel müssen vom Typ std::string oder std::wstring sein, damit die zu ptree gehörenden Serialisierer und Deserialisierer funktionieren. Ein Serialisierer erzeugt aus dem ptree die Daten im gewünschten Format, zum Beispiel JSON; ein Deserialisierer (Parser) ist das Gegenstück dazu. Denkt man in Objekten, die naturgemäß dynamisch sind, also ihre Eigenschaften während der Programmlaufzeit ändern können, friert ein Serialisieren deren Zustand ein. Erst nach dem Auftauen (Deserialisieren) kann ein Programm sie wieder verwenden.
Immer mehr Wissen. Das digitale Abo für IT und Technik.
Nur bis zum 31. Mai: heise+ 1 Jahr für nur 1,90 pro Woche lesen. Unbegrenzter Zugriff auf alle heise+ Artikel inklusive allen Digital-Magazinen.Länger lesen, mehr sparen: heise+ 1 Jahr lang für nur 1,90 € pro Woche lesen und brandaktuelles IT- und Tech-Wissen sichern. Zugriff auf alle heise+ Artikel inklusive der Digital-Magazine. Nur bis zum 31. Mai!