[英]Rust & Serde JSON deserialization examples?
我試圖弄清楚如何使用Serde將JSON反序列化為結構。 例如,serde_json 自己的文檔中的示例JSON包含以下數據:
{
"FirstName": "John",
"LastName": "Doe",
"Age": 43,
"Address": {
"Street": "Downing Street 10",
"City": "London",
"Country": "Great Britain"
},
"PhoneNumbers": [
"+44 1234567",
"+44 2345678"
]
}
現在,如果我們假設上面的數據是在變量“input”和下面的代碼中:
let deserialized_data: Data = serde_json::from_str(input).unwrap();
......結構Data
應該是什么樣的?
大多數標准數據結構都是可序列化的,因此以下結構應該可以工作:
#[derive(Serialize, Deserialize)]
struct Data {
FirstName: String,
LastName: String,
Age: u32,
Address: Address,
PhoneNumbers: Vec<String>
}
#[derive(Serialize, Deserialize)]
struct Address {
Street: String,
City: String,
Country: String
}
如果輸入中的某些字段可能不存在,則相應的結構字段應為Option<T>
而不是T
請注意,可以以更“生銹”的方式命名字段,即snake_case,因為serde支持重命名注釋:
#[derive(Serialize, Deserialize)]
struct Address {
#[serde(rename="Street")]
street: String,
#[serde(rename="City")]
city: String,
#[serde(rename="Country")]
country: String
}
此問題也與字段重命名有關。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.