Как десериализовать класс, у которого в качестве первого параметра конструктора имеется объект nlohmann::json?C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Как десериализовать класс, у которого в качестве первого параметра конструктора имеется объект nlohmann::json?

Сообщение Anonymous »


У меня есть класс, который ожидает объект 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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»