Как десериализовать класс, у которого в качестве первого параметра конструктора имеется объект nlohmann::json? ⇐ C++
-
Anonymous
Как десериализовать класс, у которого в качестве первого параметра конструктора имеется объект nlohmann::json?
У меня есть класс, который ожидает объект nlohmann::json в качестве первого параметра конструктора. Я реализовал to_json и from_json для своего класса, но from_json не вызывается (если я не вызываю его явно) и десериализация по умолчанию просто помещает весь объект в параметр json. Вот пример кода.
#include #include "nlohmann/json.hpp" используя json = nlohmann::json; класс ПримерКласс { публика: ПримерКласс(данные json = json::object(), std::string some_string = "") : m_Data(data), m_String(some_string) {} ~ПримерКласс() {} json m_Data; станд::строка m_String; }; void to_json(json& j, const Примеркласса& пример) { j = json{ {"Данные", example.m_Data}, {"String", example.m_String} }; } void from_json(const json& j, Примеркласса& пример) { j.at("Данные").get_to(example.m_Data); j.at("String").get_to(example.m_String); } интервал основной() { Пример класса example(json{ {"ключ", "значение"} }, "вот строка"); std::cout
У меня есть класс, который ожидает объект nlohmann::json в качестве первого параметра конструктора. Я реализовал to_json и from_json для своего класса, но from_json не вызывается (если я не вызываю его явно) и десериализация по умолчанию просто помещает весь объект в параметр json. Вот пример кода.
#include #include "nlohmann/json.hpp" используя json = nlohmann::json; класс ПримерКласс { публика: ПримерКласс(данные json = json::object(), std::string some_string = "") : m_Data(data), m_String(some_string) {} ~ПримерКласс() {} json m_Data; станд::строка m_String; }; void to_json(json& j, const Примеркласса& пример) { j = json{ {"Данные", example.m_Data}, {"String", example.m_String} }; } void from_json(const json& j, Примеркласса& пример) { j.at("Данные").get_to(example.m_Data); j.at("String").get_to(example.m_String); } интервал основной() { Пример класса example(json{ {"ключ", "значение"} }, "вот строка"); std::cout
Мобильная версия