使用类库jsoncpp
来序列化我的C ++对象和数据(例如,在Python中对其进行绘制),我真的厌倦了代码中将std::vector< double >
s转换为Json::Value
s的所有循环。我最终一次又一次地重新键入相同的行。因此,我想让它变得容易些。
我有两个用例:将STL
类型(至少std::vector
是std::map
)从和转换为Json::Value
,并使用我自己的数据类型执行此操作。
自己的数据类型的解决方案:
const Json::Value&
,然后构造函数尝试用数据填充对象,或者如果传递的值不满足特定要求,则引发异常operator Json::Value()
为我班的成员函数。这样,我应该能够编写如下内容:
MyObj o;
Json::Value root;
root["foo"] = o;
MyObj reconstructed(root["foo"]);
但是我应该如何使用STL
类型呢?编写显式函数,也许是模板,或者我应该对自己的数据类型做同样的事情,除了我使用自由函数而不是成员函数之外?最佳做法是什么?
您可以使用for_each编写一个函数来执行此操作。
如果要支持嵌套容器(向量中的向量等),则需要包装器函数并递归调用该函数,直到输入类型允许直接转换为Json :: Value为止。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句