Le mardi 24 septembre 2019 à 10:29 +0100, Mathias Gaunard via Boost a écrit :
On Sun, 22 Sep 2019 at 19:05, Vinnie Falco via Boost Features that matter to me: - no allocation, ever - parsing/generating data incrementally from/into segmented buffers without copying - full arbitrary-precision decimal support without imposing a decimal representation on me - not imposing any string or blob type - fast conversion between numbers and text, with correct shortest representation for floating-point
You may have a look at https://github.com/Julien-Blanc-tgcm/jbc-json . This is a library i developed with nearly the same constraints in mind. I planned released it and eventually propose it to boost when it would be ready (the main missing feature currently being the documentation). I just putted it on github since there seems to be some interest, and it is in a completely working state (both parser and writers are conformant). Regarding speed, it is a bit slower than rapidjson, thus faster than most other json cpp libraries. The jsonitem representation (which is completely optional) could benefit from some tuning (allocator support is missing, for example). It is also the only json library i'm aware of that can validate a several Gbytes json file with only 32k of memory. I plan to include a pull parser api on top of the push one, and add some additional features such as i-json and json-schema validation (everything will be build on top of the current parser, and completely optional).
I do not want to convert a stream of JSON bytes into a boost::json::value type, which might already be a lossy conversion, I want to convert it directly to my type.
This is exactly what parser_callbacks template parameter is designed for in my library. Regards, Julien