我已经上了一个用标准函数反序列化的类:
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反序列化而缺少一些参数时,我得到谷歌&#34;错误&#34; - 找不到那些缺失的参数。
有没有办法如何指定某些参数是可选的,如果它们不是JSON的一部分,将使用默认值?
答案 0 :(得分:-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) );
}
...
或类似的东西..