使用像jsoncpp
这样的库来序列化我的C ++对象和数据(例如用Python绘制它们),我真的厌倦了代码中的所有循环,将std::vector< double >
转换为{{1 }}秒。我最后一次又一次地重新输入相同的行。因此,我想让这更容易一些。
我有两个用例:将Json::Value
类型(至少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"]);
类型执行此操作?编写显式函数,可能是模板,或者我应该像我自己的数据类型一样,除了我使用自由函数而不是成员函数?什么是最佳做法?
答案 0 :(得分:1)
您可以使用for_each编写单个函数来执行此操作。
如果你想支持嵌套容器(向量中的向量等),那么你需要包装函数并递归调用函数,直到输入类型允许直接转换为Json :: Value。