Przydatne biblioteki
nlohmann/json
Bardzo przyjemna biblioteka do pracy z Json’em. Daje nam ona obsługę na kilka sposobów, jednak chciałbym przedstawić jeden, z którego korzystam. Niestety sposób ten działa tylko dla naszych typów, które możemy edytować. W związku z tym mam wątpliwości co do zachowania zasady pojedynczej odpowiedzialności (z ang. Single Responsibility Principle). Jednak nie zapominaj, że ta biblioteka posiada również rozwiązania dla (de-)serializacji typów trzecich, których modyfikować nie możemy.
Dlaczego lubię tę bibliotekę?
✓ Jest dostępna w postaci jednoplikowego nagłówka, przez co łatwo ją dołączyć do projektu.
✓ Bardzo obszerna i porządnie wykonana dokumentacja, która ułatwia zapoznanie się z dostępnymi funkcjonalnościami i tym, jak je zaimplementować u siebie.
struct MyDataType {
std::string someStrValue;
double someDoubleValue;
int someIntValue;
// Dodanie (de-) serializacji (1)
NLOHMANN_DEFINE_TYPE_INTRUSIVE(MyDataType, someStrValue, someDoubleValue, someIntValue)
};
///
/// Funkcja reprezentująca jak zamienić JSON'a w nasz własny typ
///
MyDataType toMyDataType(const std::string& rawJson) {
auto j = nlohmann::json::parse(rawJson); (2)
auto myDataType = j.get<MyDataType>();
return myDataType;
}
///
/// Funkcja reprezentująca jak zamienić nasz własny typ w JSON'a.
///
std::string toString(const MyDataType& data) {
nlohman::json jsonData = data; // W tym miejscu dochodzi do automatycznej konwersji (3)
return jsonData.dump();
}
Najpierw musimy dodać makro, które zawiera w sobie funkcje serializujące i deserializujące.
Potem możemy już dokonywać deserializacji JSON’a (w postaci ciągu znakowego) do obiektu,
i serializacji z obiektu na JSON’a.
Komentarze
Prześlij komentarz