ser-write-json

Crates.ioser-write-json
lib.rsser-write-json
version0.3.0
sourcesrc
created_at2024-05-11 22:13:45.183167
updated_at2024-10-31 22:07:20.671182
descriptionJSON serializer for ser-write and deserializer for convenience
homepagehttps://github.com/royaltm/rust-ser-write
repositoryhttps://github.com/royaltm/rust-ser-write
max_upload_size
id1237090
size211,106
royal (royaltm)

documentation

README

ser-write-json

Crate Docs Build Status Coverage Status Minimum rustc version

This crate provides a no_std friendly JSON compact serializer for serde using SerWrite as a writer and a deserializer for convenience.

This crate has been in some parts derived from work of serde-json-core and serde_json.

Usage

[dependencies]
ser-write-json = { version = "0.3", default-features = false }

Serializer

The crate provides JSON serializers in 4 flavors depending on how do you want to handle types serialized with serialize_bytes method.

  • to_writer - serialize bytes as number arrays,
  • to_writer_hex_bytes - as HEX-encoded strings,
  • to_writer_base64_bytes - as Base64 encoded strings,
  • to_writer_pass_bytes - passing through bytes to a writer assuming they contain pre-serialized JSON fragments.
  • to_writer_with_encoder - a custom encoder can be provided.

Custom string encoders can be implemented using ByteEncoder trait. There's an example in this repository that does exactly that.

Features:

  • std enables std library,
  • alloc enables alloc library
  • de-any-f32 deserialize any float using f32 instead of f64

With std or alloc features enabled additional to_string... methods are provided for convenience.

Deserializer

The JSON deserializer expects a JSON encoded mutable slice of bytes. &str or &[u8] types deserialize using (ZERO-COPY) references from the provided slice. The slice needs to be mutable so the decoder can unescape JSON strings and decode bytes from strings in various formats in-place.

The JSON deserializer is available in 4 flavors depending on how do you want to handle types deserialized with deserialize_bytes method from JSON strings:

  • from_mut_slice - decodes bytes from regular JSON strings without checking if they are proper UTF-8 strings,
  • from_mut_slice_hex_bytes - expect two hexadecimal ASCII characters per byte,
  • from_mut_slice_base64_bytes - expect Base64 encoded string,
  • from_mut_slice_with_decoder - a custom decoder can be provided.

Deserializer can also deserialize bytes in-place from a JSON array of numbers regardless of the chosen implementation.

Deserializer supports self-describing formats.

Deserializer deserializes structs from both JSON objects and arrays.

Rust Version Requirements

ser-write-json requires Rustc version 1.81 or greater.

Commit count: 84

cargo fmt