我想使用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 中是否有一种简单的方法来实现这一点?
fancy_squre
和KUBE
可以在同一个文件或不同的文件中。 - ibigbug