【发布时间】:2019-01-11 15:56:59
【问题描述】:
我正在尝试使用 Serde 根据以下结构反序列化 JSON (serde-json) 和 XML (serde-xml-rs) 文件:
use serde_derive::Deserialize;
#[derive(Debug, Clone, PartialEq, Deserialize)]
pub struct SchemaConfig {
pub name: String,
#[serde(rename = "Cube")]
pub cubes: Vec<CubeConfig>,
}
我要反序列化的字段根据文件类型具有不同的名称。在这种情况下,我希望 JSON 文件有一个带有多维数据集列表的 cubes 键,但 XML 中的等价物将是多个 <Cube /> 元素。
我不知道如何同时接受 cubes 和 Cube 作为反序列化的键。我发现最接近的是 #[serde(rename = "Cube")] 选项,但是当我使用它时,JSON 反序列化停止工作,因为它只接受 Cube 键。如果我删除该选项,XML 反序列化将停止工作,因为它只接受 cubes 作为键。
在 Serde 中是否有一种简单的方法来完成此任务?
【问题讨论】:
标签: rust serde serde-json