我想使用Serde 在github上反序列化来自Bowserinator的化学元素JSON文件.为此,我创建了一个包含所有必需字段的结构,并派生了所需的宏:
#[derive(Serialize, Deserialize, Debug, Clone)]
pub struct Element {
name: String,
appearance: String,
atomic_mass: f64,
boil: f64,
category: String,
#[serde(default)]
color: String,
density: f64,
discovered_by: String,
melt: f64,
#[serde(default)]
molar_heat: f64,
named_by: String,
number: String,
period: u32,
phase: String,
source: String,
spectral_img: String,
summary: String,
symbol: String,
xpos: u32,
ypos: u32,
}
Run Code Online (Sandbox Code Playgroud)
这工作正常,直到它到达包含"null"值的字段.例如,"color": null,在氦气场.
我得到的错误信息是{ code: Message("invalid type: unit value, expected a string"), line: 8, column: 17 }这个字段.
我试验了#[serde(default)]宏.但这仅在JSON文件中缺少字段时才有效,而不是在有null …