3

我有一个用标准函数反序列化的类:

template<class Archive> // public serialization (normal)
void serialize(Archive & ar)
{
  ar(
    cereal::make_nvp("parameter_1", parameter_1), 
    cereal::make_nvp("parameter_2", parameter_2), 

    cereal::make_nvp("parameter_3", parameter_3), 

    cereal::make_nvp("parameter_4", parameter_4), 

    cereal::make_nvp("parameter_5", parameter_5) ); 
}

但就我而言parameter_4,并且parameter_5是可选的。

它们可能在也可能不在输入 JSON 字符串中。

当我试图反序列化这种缺少一些参数的不完整 JSON 时,我得到 Cereal“错误”——找不到那些缺少的参数。

有什么方法可以指定某些参数是可选的,并且在它们不属于 JSON 默认值的情况下将被使用?

4

1 回答 1

-1

怎么样:

..
if (exist(parameter_4, parameter_5) {
  ar(
     cereal::make_nvp("parameter_1", parameter_1), 
     cereal::make_nvp("parameter_2", parameter_2), 
     cereal::make_nvp("parameter_3", parameter_3), 
     cereal::make_nvp("parameter_4", parameter_4), 
     cereal::make_nvp("parameter_5", parameter_5) ); 
}
else {
  ar(
     cereal::make_nvp("parameter_1", parameter_1), 
     cereal::make_nvp("parameter_2", parameter_2), 
     cereal::make_nvp("parameter_3", parameter_3) );
}
...

或类似的东西..

于 2018-05-16T13:03:36.930 回答