反序列化时如何将其中包含空格的 JSON 键映射到结构中的字段

How to map JSON keys with spaces in them to fields in a struct when deserializing

我正在尝试从股票报价 API 中提取反序列化数据并将其存储在 JSON 的结构中,但问题是来自源的键有空格和句点在其中。

我回来的JSON是这样的:

"01. symbol": "AAPL",
"02. open": "174.4800",
"03. high": "176.2399",
"04. low": "172.1200",
"05. price": "172.9000",
"06. volume": "89418074",
"07. latest trading day": "2022-02-03",
"08. previous close": "175.8400",
"09. change": "-2.9400",
"10. change percent": "-1.6720%"

我正在尝试将其放入名为 Json 的结构中,如下所示:

let result = &response.json::<Json>().await?;

但我不知道如何命名结构的字段以与 JSON 中的名称对齐,因为它们中有空格。有没有办法以一种方式命名结构中的字段,然后将这些字段映射到 JSON 对象中不同名称的字段?

我希望结构看起来像这样:

#[derive(Deserialize, Debug)]
struct Json {
    symbol: String,
    open: String,
    high: String, 
    ...
}

您可以在 an attribute

中指定 JSON 字段名称
#[derive(Deserialize, Debug)]
struct Json {
    #[serde(rename = "01. symbol")]
    symbol: String,
    #[serde(rename = "02. open")]
    open: String,
    #[serde(rename = "03. high")]
    high: String, 
    ...
}