我正在使用带有 c++ 的谷物来序列化和反序列化 JSON。我的 Json 对象都有一个基类,这种映射到 JSON 就像这样......
["baseclass_var1", "baseclass_var2", 21321, {"derived_object_var1":"blah", "derived_object_var2":"blahblah"}]
派生类在此 JSON 数组的末尾提供 JSON 对象,而基类在数组中提供值。
我的课看起来大概是这样的,
struct baseObject
{
baseObject()
{
}
template<typename Archive>
void serialize(Archive& archive)
{
archive.makeArray();
archive("baseclass_var1", "baseclass_var2", 21321);
}
};
struct derivedObject : baseObject
{
template<typename Archive>
void serialize(Archive& archive)
{
baseObject::serialize(archive);
archive.startNode();
cereal::nvp(archive, "derived_object_var1", "blah");
cereal::nvp(archive, "derived_object_var2", "blahblah");
archive.finishNode();
}
}
我不禁想考虑谷物的使用有多容易,其中 JSON 的结构是隐式定义的,我可能会因为必须显式调用而犯错startNode()
,finishNode()
和makeArray()
? 是否有替代实现可以为我处理 JSON 结构,而不必明确说明我希望子节点在哪里?