#反序列化 #serde #结构体 #期间 # #序列化 #元素

serde_struct_wrapper

在序列化和反序列化过程中使用Serde将结构体包装成具有不同根元素的替代元素

3个版本

使用旧的Rust 2015

0.3.2 2018年8月18日
0.3.1 2018年8月18日
0.3.0 2018年8月18日

1475编码

每月32次下载

MIT/Apache

12KB
110

Serde Struct Wrapper

Build Status Latest Version Rust Documentation

此crate提供宏,允许在序列化和反序列化过程中使用Serde将Rust结构体包装成具有不同根键。原则上,它提供了类似于Java的Jackson框架中的@JsonRootName注解的功能。

请注意,此crate主要旨在与serde_json crate一起使用。它尚未与其他数据格式进行测试。

用法

将以下内容添加到您的Cargo.toml中

serde_struct_wrapper = "0.3"

您可以使用下面的宏serde_with_root!来序列化和反序列化具有替代根键的结构体。请注意,结构体上使用了#[serde(remote = "Self")]属性,让SerDe知道宏提供的替代SerializeDeserialize实现。

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根据您的选择,受以下之一许可:

致谢

此crate的初始Deserializer实现由David Tolnay在 Github问题中提供。该代码被用作此crate的基础。

依赖项

约0.5-1.1MB
约26K SLoC