Я пытаюсь преобразовать json формы
{
"content": {
"test_key": "test"
},
"sender": "alice",
"type": "key_type"
}
в мой объект, который является
template<class Content>
struct Event
{
Content content;
std::string type;
};
, шаблон используется в качестве структуры Контента не исправлено Когда я пытаюсь использовать from_ json, который похож на
template<class Content>
void
from_json(const nlohmann::json &obj, Event<Content> &event)
{
event.content = obj.at("content").get<Content>();
event.type = obj.at("type").get<std::string>();
}
, я получаю сообщение об ошибке
[json .exception.out_of_range.403] key 'content 'не найден
, хотя в json есть ключ содержимого. Почему это так?
#include <iostream>
#include <nlohmann/json.hpp>
using json = nlohmann::json;
using namespace std;
template<typename Content>
struct Event
{
Content content;
string type;
};
template<typename Content>
void from_json(const nlohmann::json &obj, Event<Content> &event)
{
event.content = obj.at("content").get<Content>();
event.type = obj.at("type").get<string>();
}
struct Key{
string test_key;
string random_data;
};
int main(){
json j={{"content",{{"test_key","test"}}},{"sender","alice"},{"type","key_type"}};
Event<Key> event_instance;
try{
from_json(j,event_instance);
}
catch(json::exception& e){
cout<<e.what()<<endl;
}
}
Приведенный выше код является минимально воспроизводимым примером