ijson
A more memory efficient replacement for serde_json::Value
0.1.7
4.3M downloads/mo
#4838 most downloaded on crates.io
Diggsey/ijson
What this package is like to depend on
Last release 1 months ago
16 Jul 2026
Release timing varies
gaps range from 1 weeks to 3.2 years
Nearly every release is documented
notes for 7 of 7 stable releases
2 versions withdrawn
withdrawn after publishing
6 years old
9 releases · first in 2020
3 releases in the last 12 months
see the full history below
Release timeline
9 releases · Nov 2020 to Jul 2026
2021
2022
2023
2024
2025
2026
Releases
latest 9-
0.1.716 Jul 2026Release notes
Open source →What's Changed
- Add FromIterator and serde_json conversions for IValue (#38) by @Diggsey in #39
- Add IObject <-> serde_json::Map conversions by @Diggsey in #40
- Add crates.io keywords and categories (#33) by @Diggsey in #41
- Store short strings inline instead of interning them (#24) by @Diggsey in #42
- Inline small values with a decimal number representation (#24) by @Diggsey in #43
- Update README and changelog for the inline-value representation by @Diggsey in #44
Full Changelog: 0.1.6...0.1.7
Release notes
Open source →- Add
FromIterator<T: Into<IValue>>forIValue(collects into an array) andFromIterator<(K: Into<IString>, V: Into<IValue>)>forIValue(collects into an object), mirroringserde_json::Value. - Add
From<serde_json::Value> for IValueandFrom<IValue> for serde_json::Valuefor smoother interoperability withserde_json. - Add
From<serde_json::Map<String, serde_json::Value>> for IObjectand the reverse, matching the existingHashMap/BTreeMap/IndexMapconversions. - Store small values —
null, booleans, small numbers, and short strings — inline within the pointer-sizedIValue, behind a widened 3-bit tag scheme. Small numbers are held as amantissa * base^expvalue (a base-2 binary float by default, so every inline number is exactly anf64), so most JSON numbers (integers, timestamps/ids, and short fractions such as0.5and63.5) require no allocation or pointer indirection; only larger integers and out-of-range floats fall back to an 8-byte heap payload. Note:IString::as_str().as_ptr()is no longer stable across equal short strings, since they are no longer deduplicated to a shared allocation (value equality via==is unaffected). - Add an opt-in
arbitrary_precisionfeature that stores numbers as their exact decimal value (mantissa * 10^expinline, or a heap arbitrary-precision decimal) instead of rounding tof64. With it enabled, values such as0.1are kept exactly, and integers and decimals beyondf64's range and precision become representable; deserialization routes through the same parser asstr::parse, so a value round-trips exactly.
-
0.1.618 Mar 2026Release notes
Open source →- Breaking: Remove
Borrow<str>impl forIStringby default. The impl violates theBorrowcontract becauseIStringhashes by pointer, not by contents, causing silent lookup failures inHashMap/HashSetwhen using&strkeys. Abroken-borrow-impl-compatfeature flag is available as a temporary compatibility measure.
- Breaking: Remove
-
0.1.517 Mar 2026Release notes
Open source →Full Changelog: 0.1.4...0.1.5
- Fix soundness issue when OOM occurs
- Implement Display for IString
- Bump versions of dependencies (except for dashmap, which removed necessary functionality)
Release notes
Open source →- Fix potential undefined behavior on allocation failure.
- Update dependencies.
-
0.1.403 Dec 2024Release notes
Open source →What's Changed
- Clean Clippy warnings by @gkorland in #12
- Correctly calculate offset to data following Header by @wesleywiser in #19
- Correct
is_objecttypo. by @kjschiroo in #22 - upgrade to dashmap 5.4 by @gkorland in #25
- Added optional hash table
indexmapin #28
New Contributors
- @gkorland made their first contribution in #12
- @wesleywiser made their first contribution in #19
- @kjschiroo made their first contribution in #22
Full Changelog: 0.1.3...0.1.4
Release notes
Open source →- Add optional
indexmapfeature to enable conversion betweenIObjectandIndexMap. - Fix unsound offset calculation in internal
Headerlayout. - Fix
is_objecttypo ininto_object. - Upgrade
dashmapto 5.4.
-
0.1.303 Sep 2021 -
0.1.224 Aug 2021 -
0.1.120 Apr 2021 -
0.1.021 Nov 2020 withdrawnRelease notes
Open source →- Initial release: memory-efficient
IValuereplacement forserde_json::Value. - Interned strings (
IString) and numbers (INumber). - Robin-hood hash table based
IObject. IArraytype.- Full serde serialization/deserialization support.
From/Intoconversions for common types.
- Initial release: memory-efficient
-
0.0.119 Nov 2020 withdrawnNothing published for this version