我想创建一个包含类的实例变量的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]
}

I've looked into several C++ libraries for creating JSON and they all seem incredibly complex. I'd like something similar to Javascript's JSON.stringify(object). In other words just pass a std::map to it and receive a string. The map could contain other maps, vectors, lists, strings, numbers and bools.

最好的方法是什么?

Thanks for your help.

Edit

我已经调查了以下几点:

json spirit, jsoncpp, zoolib, JOST, CAJUN, libjson, nosjob, JsonBox, jsonme--

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

Edit 2

Okay, scrap the idea of serializing a class since it appears that's impossible with C++'s lack of reflection.

有没有一种很好的方法可以将包含std:map、std::Vector、std::list、number、string和bools的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();

Output:

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

我想,json_map_demo.cpp人是个不错的起点.

Json相关问答推荐

无法根据vega规范中的条件设置文本 colored颜色

Allof Indide的JSON模式之一

如何创建生成两个不同对象的JSON数组的SQL查询?

使用 jolt 变换展平嵌套 JSON - 非常复杂

为什么 Django Rest API 序列化器没有正确序列化多对多字段

如何使用 serde_json 构建有状态的流式解析器?

如何将 JSON 文本作为参数传递给 powershell?

通过 xslt 将内部 json 转换为 xml 时遇到问题

boost::json::value 的大括号初始化将其从对象转换为数组

为什么JsonConvert反序列化对象以int但不长失败

从ruby中的json获取特定的键值

JSON.NET 中特定对象的自定义转换

如何使用 CORS 实现 JavaScript Google Places API 请求

如何使用 Newtonsoft.Json 反序列化 JSON 数组

json.decoder.JSONDecodeError:期望值:第 1 行第 1 列(字符 0)

如何使用 jq 将 JSON 对象流转换为数组

Select 什么数据类型json或者jsonb或者text

将循环 struct 转换为 JSON - 有什么方法可以找到它抱怨的字段?

如何转换为 D3 的 JSON 格式?

获取一个数字的 PHP 对象属性