相关疑难解决方法(0)

将JSON字符串或字符串数​​组反序列化为Vec

我正在编写一个与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能够做到这一点?

rust serde serde-json

5
推荐指数
2
解决办法
2405
查看次数

标签 统计

rust ×1

serde ×1

serde-json ×1