4 stable releases
1.0.7 | Oct 9, 2023 |
---|---|
1.0.6 | Oct 7, 2023 |
0.1.23 |
|
0.1.22 |
|
0.1.15 |
|
#178 in #dom
Used in chiselj
11MB
2.5K
SLoC
chisel-json
Another JSON Parser?
The Chisel JSON parser aims to be a relatively simple DOM and SAX parser for JSON, that does
not include all the machinery required to support explicit serialisation from, and
deserialisation into structs
/enums
within Rust.
It's a simple little parser that is intended to allow you to choose how you want to parse a lump of cursed JSON, and then either build/transform a DOM into a richer AST structure, or alternatively just cherry-pick the useful bits of the payload via closures which are called in response to SAX parsing events.
(Because let's face it, JSON payloads usually come burdened with a whole load of unnecessary crap that you'll never use).
Crate Feature Flags
There currently defined features within the crate are as follows:
Feature | Description | Default Feature? |
---|---|---|
mixed_numerics |
Should numbers be parsed separately as i64 and f64 ? |
yerp |
Examples
There are several examples provided as part of the source:
Example | Description |
---|---|
distinct_pointers | Extract all distinct JSON pointers using the SAX parser |
distinct_object_pointers | Extract all object JSON pointers using the SAX parser |
Build & Test
In order to build locally you can just use the standard cargo build
command and associated variants,
however there is also a supplementary Makefile.toml included in the source if you prefer to use
cargo-make
.
To regenerate the README.md file as you build - you should either use:
cargo make
or alternatively,
cargo readme > README.md
There are a number of benchmarks included based on the most excellent
criterion within the source, which can be run using either the supplied
benchmark.sh script, or alternatively by using the associated cargo make
targets.