simd-lite / simd-json

Rust port of simdjson
Apache License 2.0
1.14k stars 86 forks source link

IndexMap support #270

Open RReverser opened 1 year ago

RReverser commented 1 year ago

serde-json has support for order-preserving representation of serde_json::Value under feature preserve_order, which switches Object representation from regular HashMap to IndexMap.

Is this something possible to add in simd-json as well?

Stable, ordered, roundtrips are useful in many applications of JSON editing.

Licenser commented 1 year ago

Heya, that should be doable and fairly easy.

If you want to take a stab at it this is where the code for the value lives, it might need some work in value-trait, not 100% sure haven't checked, too but that should be copy & pasta for the most part.

Otherwise I'll put it on the todo list but can't promise when I'll get around to it :)

RReverser commented 1 year ago

I decided to try the library on just the parsing parts for my large datastructures for now, but found it's actually slightly slower than serde-json, so probably not going to work on enhancements for now. Not sure whether that's just because of Serde layers + custom Deserialize implementations involved or something else.

Licenser commented 1 year ago

It's hard to say without knowing more about the parsing, the data structure and the system it's running on. For large datastructures simd-json should be significantly faster, but there is a should in there ;). That said it's worth using simd-json-derive instead of serde-derive as it is better optimized for json parsing.