rjson : a minimal json parser for rust
- Contain a single standalone
lib.rs
that do all the jobs.
- Impl the traits with your own structs before
parse
.
- A simple Impl can be,
enum
for Value
, the same enum
for Null
, Vec
for Array
and BTreeMap
for Object
.
- It requires only
core
and alloc
, nothing else, including std
.
- In
no_std
environment, it need a global allocator to work.
Reminder
- We allow
,
after the last item/member of Array/Object.
- We treat unescaped line breaks as normal char, and ignore escaped line breaks.
- We do not support surrogate unicode char.
- We use
f64
for all numbers, but you can use others. Remind: f64
means i52
.
- We take
&[char]
, not &[u8]
, and not &str
.
- No
stringify
or encode
, because they should not be a part of the traits.
- Instead of returning
None
, we simply ignore chars after the data.
- The position where data ends is returned through
index
. You can compare it with len() - 1
.
- This value is also useful when
Option::None
returned, by indicating where the syntax error occurs.
parse
may return all possible values, not only Array
and Object
.