我想製作一個包含多種類型的JSON對象。這裏的結構:如何創建一個Rust HashMap,其中的值可以是多種類型之一?
{
"key1": "value",
"key2": ["val", "val", "val"]
"key3": { "keyX": 12 }
}
我怎樣才能使HashMap
接受所有這些類型?
我想這一點:
let item = HashMap::new();
item.insert("key1", someString); //type is &str
item.insert("key2", someVecOfStrings); //type is Vec<String>
item.insert("key3", someOtherHashMap); //Type is HashMap<&str, u32>
let response = json::encode(&item).unwrap();
我知道散列圖沒有足夠的類型信息,但我不知道我怎樣才能使它發揮作用。我曾嘗試在item
上設置一個明確的類型,即HashMap<&str, Encodable>
,但這只是另一個錯誤。什麼是正確的方法來做到這一點?
你能提供一個例子如何做我發佈在問題中的例子嗎?除了使用枚舉之外,還有別的方法嗎?看起來有點像其他語言的矯枉過正,不知道Rust是如何做的,因爲我剛剛開始。 – Majster
[這個箱子](https://github.com/maciejhirsz/json-rust)也可以讓你很容易地編寫JSON。 – squiguy
我已經添加了一個例子。你爲什麼認爲這是一個矯枉過正的問題?這是非常簡單的使用鐵鏽枚舉(標記聯合)。 –