0

使用诸如jsoncpp序列化我的 C++ 对象和数据之类的库(例如在 Python 中绘制它们),我真的厌倦了代码中将std::vector< double >s转换为Json::Values 的所有循环。我最终一次又一次地重新输入相同的行。因此,我想让这更容易一些。

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

4

1 回答 1

1

您可以使用for_each编写一个函数来执行此操作。

如果要支持嵌套容器(向量中的向量等),则需要包装函数并递归调用该函数,直到输入类型允许直接转换为 Json::Value。

于 2013-11-29T08:51:56.863 回答