我有一个用标准函数反序列化的类:
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的一部分的情况下将使用默认值?
发布于 2018-05-16 21:03:37
这样如何:
..
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) );
}
...或者类似的东西..
https://stackoverflow.com/questions/50371213
复制相似问题