| Crates.io | ser-write-json |
| lib.rs | ser-write-json |
| version | 0.3.1 |
| created_at | 2024-05-11 22:13:45.183167+00 |
| updated_at | 2025-06-13 14:26:59.097367+00 |
| description | JSON serializer for ser-write and deserializer for convenience |
| homepage | https://github.com/royaltm/rust-ser-write |
| repository | https://github.com/royaltm/rust-ser-write |
| max_upload_size | |
| id | 1237090 |
| size | 212,384 |
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.
[dependencies]
ser-write-json = { version = "0.3", default-features = false }
ser-write-json 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,With std or alloc features enabled additional to_string... methods are provided for convenience.
Unlike most JSON deserializers, a deserializer in ser-write-json expects a JSON encoded mutable slice of bytes. &str or &[u8] types are deserialized 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 deserializes 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.
Features:
de-any-f32 deserialization of floats to any (self-describing) type will deserialize to f32 instead of f64.
ser-write-json requires Rustc version 1.81 or greater.