template class utils::Serializer

Overview

Serialization utility class. Can perform automatic read and write. More…

#include <Serializer.h>

template <typename Type, typename SerializableType>
class Serializer {
public:
    // construction

    Serializer(const std::string& root_name);

    // methods

    std::vector<Type> FromJsonString(const std::string& json_string) const;
    std::vector<std::shared_ptr<Type>> FromJsonStringAsPtr(const std::string& json_string) const;
    std::string ToJsonString(const std::vector<Type>& objects) const;
    std::vector<Type> FromJsonFile(const std::string& file_path) const;
    std::vector<std::shared_ptr<Type>> FromJsonFileAsPtr(const std::string& file_path) const;
    bool ToJsonFile(const std::vector<Type>& objects, const std::string& file_path) const;
};

Detailed Documentation

Serialization utility class. Can perform automatic read and write.

Uses the “cereal” serialization library - https://uscilab.github.io/cereal/index.html. Cereal allows the possibility to save-load in formats:

  • Binary

  • JSON

  • XML So far this library only makes use of the “JSON” option.

Methods

std::vector<Type> FromJsonString(const std::string& json_string) const

Read JSON string.

std::vector<std::shared_ptr<Type>> FromJsonStringAsPtr(const std::string& json_string) const

Read JSON string, return as shared pointers.

std::string ToJsonString(const std::vector<Type>& objects) const

Serialize to JSON string.

std::vector<Type> FromJsonFile(const std::string& file_path) const

Read from JSON file by path.

std::vector<std::shared_ptr<Type>> FromJsonFileAsPtr(const std::string& file_path) const

Read from JSON file by path, return as shared pointers.

bool ToJsonFile(const std::vector<Type>& objects, const std::string& file_path) const

Serialize to JSON string and save to file.