【发布时间】:2023-04-07 22:51:02
【问题描述】:
我想创建一个包含我的类的实例变量的 JSON 字符串。
例如,
class Example {
std::string string;
std::map<std::string, std:string> map;
std::vector<int> vector;
};
会变成:
{
"string":"the-string-value",
"map": {
"key1":"val1",
"key2":"val2"
},
"vector":[1,2,3,4]
}
我研究了几个用于创建 JSON 的 C++ 库,它们看起来都非常复杂。我想要类似于 Javascript 的 JSON.stringify(object) 的东西。换句话说,只需将 std::map 传递给它并接收一个字符串。该映射可以包含其他映射、向量、列表、字符串、数字和布尔值。
最好的方法是什么?
感谢您的帮助。
编辑
我研究了以下内容:
json精神、jsoncpp、zoolib、JOST、CAJUN、libjson、nosjob、JsonBox、jsonme--
据我所知,我可以在下面的答案中构造一个单独的 JSON 对象并转换为 JSON 我希望能够将我的东西存储在标准集合中并进行转换。
编辑 2
好的,放弃对类进行序列化的想法,因为 C++ 缺乏反射,这似乎是不可能的。
有没有一种很好的方法可以将包含 std:maps、std::vectors、std::lists、数字、字符串和布尔值的 std::map 转换为 JSON,而无需更改数据类型或将数据复制到新的数据类型?
谢谢。
【问题讨论】:
-
你看过哪些库?所以我们知道什么你觉得复杂
-
我已经更新了我的帖子。复杂性在于需要做很多工作才能做一些我认为非常简单的事情。我真的觉得我错过了一些东西,可能是一些明显的东西。
-
你没有遗漏任何东西,这在 C++ 中是不可能的(以你描述的形式)。
-
您可能会以错误的方式处理此问题。这样的“仅数据”类可能应该是
std::tuple;并且您应该能够很容易地构建一些模板操作来输出元组的 JSON 表示。
标签: c++ json serialization