Crates.io | ser-write-json |
lib.rs | ser-write-json |
version | 0.3.0 |
source | src |
created_at | 2024-05-11 22:13:45.183167 |
updated_at | 2024-10-31 22:07:20.671182 |
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 | 211,106 |
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 }
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 libraryde-any-f32
deserialize any float using f32 instead of f64With std
or alloc
features enabled additional to_string...
methods are provided for convenience.
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.
ser-write-json
requires Rustc version 1.81 or greater.