0

我正在使用带有 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 结构,而不必明确说明我希望子节点在哪里?

4

0 回答 0