3个版本
使用旧的Rust 2015
0.3.2 | 2018年8月18日 |
---|---|
0.3.1 | 2018年8月18日 |
0.3.0 | 2018年8月18日 |
1475 在 编码
每月32次下载
12KB
110 行
Serde Struct Wrapper
此crate提供宏,允许在序列化和反序列化过程中使用Serde将Rust结构体包装成具有不同根键。原则上,它提供了类似于Java的Jackson框架中的@JsonRootName
注解的功能。
请注意,此crate主要旨在与serde_json
crate一起使用。它尚未与其他数据格式进行测试。
用法
将以下内容添加到您的Cargo.toml中
serde_struct_wrapper = "0.3"
您可以使用下面的宏serde_with_root!
来序列化和反序列化具有替代根键的结构体。请注意,结构体上使用了#[serde(remote = "Self")]
属性,让SerDe知道宏提供的替代Serialize
和Deserialize
实现。
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);
这将使您能够序列化和反序列化如下所示的JSON结构
{
"point": {
"x": 1,
"y": 2
}
}
要仅获取Serializer
实现,请使用宏serialize_with_root!
;同样,使用宏deserialize_with_root!
仅获取Deserializer
实现。
许可
Serde根据您的选择,受以下之一许可:
- Apache License,版本2.0(LICENSE-APACHE 或 http://www.apache.org/licenses/LICENSE-2.0)
- MIT许可(LICENSE-MIT 或 http://opensource.org/licenses/MIT)
。
致谢
此crate的初始Deserializer
实现由David Tolnay在此 Github问题中提供。该代码被用作此crate的基础。
依赖项
约0.5-1.1MB
约26K SLoC