Custom de/serialization functions for Rust's serde
This crate provides custom de/serialization helpers to use in combination with serde's with-annotation and with the improved
Some common use cases are:
- De/Serializing a type using the
FromStrtraits, e.g., for
- Support for arrays larger than 32 elements or using const generics.
serde_aslarge arrays are supported, even if they are nested in other types.
Option<[u8; M]>, and
Box<[[u8; 64]; N]>are all supported, as this examples shows.
- Skip serializing all empty
- Apply a prefix to each field name of a struct, without changing the de/serialize implementations of the struct using
- Deserialize a comma separated list like
Vec<String>. Check the documentation for
Check out the user guide to find out more tips and tricks about this crate.
For further help using this crate you can open a new discussion or ask on users.rust-lang.org. For bugs, please open a new issue on GitHub.
serde_with in your Project
Add this to your
The crate contains different features for integration with other common crates. Check the feature flags section for information about all available features.
Annotate your struct or enum to enable the custom de/serializer.
#[serde_as] attribute must be place before the
Large and const-generic arrays
serde does not support arrays with more than 32 elements or using const-generics.
serde_as attribute allows to circumvent this restriction, even for nested types and nested arrays.
This situation often occurs with JSON, but other formats also support optional fields.
If many fields are optional, putting the annotations on the structs can become tedious.
#[skip_serializing_none] attribute must be place before the
This example is mainly supposed to highlight the flexibility of the
serde_as-annotation compared to serde's with-annotation.
More details about
serde_as can be found in the user guide.
Licensed under either of
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or #404)
at your option.
For detailed contribution instructions please read
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.