#serde #json #wasm

serde-json-wasm

serde_json for Wasm programs (small, deterministic, no floats)

13 unstable releases (4 breaking)

0.5.0 Dec 6, 2022
0.4.1 May 5, 2022
0.4.0 Mar 29, 2022
0.3.2 Dec 14, 2021
0.1.1 Oct 27, 2019

#19 in WebAssembly

Download history 13049/week @ 2022-11-27 13170/week @ 2022-12-04 14356/week @ 2022-12-11 9437/week @ 2022-12-18 5270/week @ 2022-12-25 8361/week @ 2023-01-01 12292/week @ 2023-01-08 13878/week @ 2023-01-15 14818/week @ 2023-01-22 14994/week @ 2023-01-29 10910/week @ 2023-02-05 12934/week @ 2023-02-12 16525/week @ 2023-02-19 14030/week @ 2023-02-26 15561/week @ 2023-03-05 13006/week @ 2023-03-12

59,768 downloads per month
Used in 330 crates (16 directly)

MIT/Apache

140KB
4K SLoC

serde-json-wasm

serde-json-wasm on crates.io Docs

A serde-json alternative for CosmWasm smart contracts.

License

Licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.


lib.rs:

serde-json for wasm programs

This version of serde-json is aimed at applications that run on resource constrained devices.

Current features

  • The error type is a simple C like enum (less overhead, smaller memory footprint)
  • (De)serialization doesn't require memory allocations
  • Deserialization of integers doesn't go through u64; instead the string is directly parsed into the requested integer type. This avoids pulling in KBs of compiler intrinsics when targeting a non 64-bit architecture.
  • Supports deserialization of:
    • bool
    • Integers
    • str (This is a zero copy operation.) (*)
    • Option
    • Arrays
    • Tuples
    • Structs
    • C like enums
  • Supports serialization (compact format only) of:
    • bool
    • Integers
    • str
    • Option
    • Arrays
    • Tuples
    • Structs
    • C like enums

(*) Deserialization of strings ignores escaped sequences. Escaped sequences might be supported in the future using a different Serializer as this operation is not zero copy.

Planned features

  • (De)serialization from / into IO objects once core::io::{Read,Write} becomes a thing.

Non-features

This is explicitly out of scope

  • Anything that involves dynamic memory allocation
    • Like the dynamic Value type

MSRV

This crate is guaranteed to compile on stable Rust 1.31.0 and up. It might compile with older versions but that may change in any new patch release.

Dependencies

~250KB