Crate serde_struct_wrapper[−][src]
This crate provides macros that enable wrapping Rust structs with
alternate root keys during serialization and deserialization using
Serde. In principle, it offers a functionality similar to the
@JsonRootName
annotation for Java's
Jackson
framework.
Note that this crate is primarily intended to be used in conjunction
with the serde_json
crate. It
has not been tested with other data formats.
Usage
You can use the serde_with_root!
macro as shown below to both
serialize and deserialize a Struct with an alternate root key. (Please
note the use of the #[serde(remote = "Self")]
attribute on the
Struct letting SerDe know of the alernate Serialize
and
Deserialize
implementations provided by the macro.)
extern crate serde; #[macro_use] extern crate serde_derive; #[macro_use] extern crate serde_struct_wrapper; #[derive(Serialize, Deserialize, Debug)] #[serde(remote = "Self")] pub struct Point { pub x: i32, pub y: i32, } serde_with_root!("point": Point);
The above will let you serialize/deserialize a JSON structure like the following:
{
"point": {
"x": 1,
"y": 2
}
}
For getting only the Serializer
implementation, use the
serialize_with_root!
macro; likewise with the
deserialize_with_root!
macro for only the Deserializer
implementation.
Macros
deserialize_with_root |
Generates a custom SerDe |
serde_with_root |
Helper macro that will generate both the |
serialize_with_root |
Generates a custom SerDe |