当键名中包含连字符时,如何将响应 JSON 读取为结构?

How to read response JSON as structs when they contain hyphens in key names?

我正在查询 API 一些数据,但它们的键在名称中使用连字符而不是下划线,并且由于我不能在结构字段名称中使用连字符,所以我无法转换它。

比如我的结构:

pub struct Example {
    user_id: String,
    name: String,
}

收到的json就像

{
    "user-id": "abc",
    "name": "John"
}

现在我正在这样做,但我不能,因为我不能直接施放它

let res = client
    .get("SOME-URL")
    .header("x-api-key", APP_ID)
    .send()
    .await?;

let response_body: Example = res.json().await?;

如果只是单个属性,可以使用:

如果是所有这些(烤肉串,或其他样式),您可以使用:

#[serde(rename_all = "kebab-case")]

#[derive(Deserialize, Debug)]
pub struct Example {
    #[serde(alias = "user-id")]
    user_id: String,
    name: String,
}

playground