我正在编写一个与JSON Web API接口的包.一个端点通常返回表单的响应{ "key": ["value1", "value2"] },但有时键只有一个值,而端点返回{ "key": "value" }而不是{ "key": ["value"] }
我想写一些通用的东西,我可以这样使用#[serde(deserialize_with)]:
#[derive(Deserialize)]
struct SomeStruct {
#[serde(deserialize_with = "deserialize_string_or_seq_string")]
field1: Vec<SomeStringNewType>,
#[serde(deserialize_with = "deserialize_string_or_seq_string")]
field2: Vec<SomeTypeWithCustomDeserializeFromStr>,
}
#[derive(Deserialize)]
struct SomeStringNewType(String);
struct SomeTypeWithCustomDeserializeFromStr(String);
impl ::serde::de::Deserialize for SomeTypeWithCustomDeserializeFromStr {
// Some custom implementation here
}
Run Code Online (Sandbox Code Playgroud)
我该如何写一个deserialize_string_or_seq_string能够做到这一点?