Boost logo

Boost :

From: Julien Blanc (julien.blanc_at_[hidden])
Date: 2019-09-24 11:29:00


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


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk