使用诸如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
类型呢?编写显式函数,也许是模板,或者我应该对我自己的数据类型做同样的事情,除了我使用自由函数而不是成员函数?最佳做法是什么?