Я хотел бы создать строку 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, и все они кажутся невероятно сложными. Мне бы хотелось что-то похожее на Javascript JSON.stringify(object)
. Другими словами, просто передайте ему std:: map и получите строку. Карта может содержать другие карты, векторы, списки, строки, числа и bools.
Какой самый лучший способ сделать это?
Спасибо за вашу помощь.
Edit
Я рассмотрел следующее:
json spirit, jsoncpp, zoolib, JOST, CAJUN, libjson, nosjob, JsonBox, jsonme -
Я понимаю, что могу построить отдельный объект JSON, как в ответе ниже, и преобразовать в JSON. Я хотел бы иметь возможность хранить мои вещи в стандартных коллекциях и конвертировать.
Изменить 2
Хорошо, отбросьте идею сериализации класса, так как кажется невозможным с отсутствием рефлекса С++.
Есть ли хороший способ конвертировать std:: map, содержащий std: maps, std::vectors, std:: lists, numbers, string и bools в JSON без необходимости изменять типы данных или копировать данные в новый тип данных?
Спасибо.