[英]Deserializing JSON with multiple possible values with rust
所以我正在用 Rust 編寫一個程序(我對它很陌生),它讀取一個 json 配置文件並根據輸入做一些事情。 我已經成功地使用serde_json解析了 json。 我想讓用戶做的下一件事是能夠指定一些高級選項,但我不知道如何解析輸入。 默認的 json 看起來像這樣:
{
value: true
}
將其解析為這樣的結構:
#[derive(Deserialize)]
pub struct Config {
value: bool
}
我將如何為用戶添加選項以便能夠像這樣輸入bool
或object
:
{
value: {
avanced_value: true
}
}
我曾嘗試使用這樣的enum
但似乎無法在枚舉中使用bool
。
#[derive(Deserialize)]
pub struct Config {
value: ValueEnum
}
#[derive(Deserialize)]
pub enum ValueEnum {
bool,
Config(ValueConfig),
}
#[derive(Deserialize)]
pub struct ValueConfig {
advanced_value: bool
}
我是否遺漏了一些明顯的東西,還是應該重構輸入 json? 提前Tnx。
您沒有將 bool 包裝在枚舉變體中(就像您使用 ValueConfig 所做的那樣)。 同樣默認情況下,serde 標記枚舉,這可能不是您想要的。 您想使用未標記的枚舉:
#[derive(Deserialize)]
pub struct Config {
value: ValueEnum
}
#[derive(Deserialize)]
#[serde(untagged)]
pub enum ValueEnum {
Bool(bool),
Config(ValueConfig),
}
#[derive(Deserialize)]
pub struct ValueConfig {
advanced_value: bool
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.