- работает только с UTF-8 и однобайтными кодировками
- все числовые типы представлены через std::string
- тип bool представлен через std::string
- тип null представлен через std::string
- под капотом RapidJSON
Желательно, но не обязательно, переопределить методы.
#include <SimpleJson/Reader.hpp>
#include <SimpleJson/Handler.hpp>
class MH: public simple_json::Handler {
public:
virtual void ObjectStart() { std::cout << "object start\n"; }
virtual void ObjectEnd() { std::cout << "object end\n"; }
virtual void ArrayStart() { std::cout << "array start\n"; }
virtual void ArrayEnd() { std::cout << "array end\n"; };
virtual void Key(const simple_json::key_t k) {
std::cout << "key=";
std::cout << k << std::endl;
};
virtual void Value(const simple_json::value_t v) {
std::cout << "value=";
std::cout << v << std::endl;
}
};#include <fstream>
std::ifstream in("first_test_05.json");#include <string>
#include <sstream>
std::string s = R"raw(
{
"hello7" : "world7",
"t" : true ,
"f" : false,
"n" : null,
"i" : 123,
"pi" : { "x" : 6 },
"pi2" : [ "x", 6, 777.77, true, "true" ]
}
)raw";
std::stringstream in(s);simple_json::Reader R;
MH MHH;
if (R.Parse(in, MHH)) {
std::cout << "good!\n";
}RapidJSON https://github.com/miloyip/rapidjson
Mozilla Public License Version 2.0