Преобразование класса C++ в JSON

Я хочу создать строку 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]
}

Я просмотрел несколько библиотек C++ для создания JSON, и все они кажутся невероятно сложными. Я бы хотел что-то похожее на JSON.stringify(object) от Javascript. Другими словами, просто передайте ему std::map и получите строку. Карта может содержать другие карты, векторы, списки, строки, числа и bools.

Какой самый хороший способ сделать это?

Спасибо за помощь.

Edit

Я просмотрел следующие:

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

Которые, как я понимаю, я могу создать отдельный JSON объект, как в ответе ниже и конвертировать в JSON Я бы хотел иметь возможность хранить свои вещи в стандартных коллекциях и конвертировать.

Edit 2

Хорошо, отбросьте идею сериализации класса, поскольку, похоже, это невозможно с отсутствием отражения в C++.

Есть ли хороший способ преобразовать std::map, содержащий std:maps, std::vectors, std::lists, числа, строки и bools в JSON без необходимости менять типы данных или копировать данные в новый тип данных?

Спасибо.

54
задан tgt 22 November 2011 в 00:25
поделиться