gpt4 book ai didi

c++ - 将 C++ 类转换为 JSON

转载 作者:IT老高 更新时间:2023-10-28 12:44:49 28 4
gpt4 key购买 nike

我想创建一个包含我的类的实例变量的 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 传递给它并接收一个字符串。该映射可以包含其他映射、 vector 、列表、字符串、数字和 bool 值。

最好的方法是什么?

感谢您的帮助。

编辑

我研究了以下内容:

json精神、jsoncpp、zoolib、JOST、CAJUN、libjson、nosjob、JsonBox、jsonme--

据我所知,我可以在下面的答案中构造一个单独的 JSON 对象并转换为 JSON 我希望能够将我的东西存储在标准集合中并进行转换。

编辑 2

好的,放弃序列化类的想法,因为 C++ 缺乏反射,这似乎是不可能的。

有没有一种很好的方法可以将包含 std:maps、std::vectors、std::lists、数字、字符串和 bool 值的 std::map 转换为 JSON,而无需更改数据类型或将数据复制到新的数据类型?

谢谢。

最佳答案

JSON Spirit将允许您这样做:

Object addr_obj;

addr_obj.push_back( Pair( "house_number", 42 ) );
addr_obj.push_back( Pair( "road", "East Street" ) );
addr_obj.push_back( Pair( "town", "Newtown" ) );

ofstream os( "address.txt" );
os.write( addr_obj, os, pretty_print );
os.close();

输出:

{
"house_number" : 42,
"road" : "East Street",
"town" : "Newtown"
}

json_map_demo.cpp我想这将是一个不错的起点。

关于c++ - 将 C++ 类转换为 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8220130/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com