当键名中包含连字符时,如何将响应 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,
}
我正在查询 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,
}