首页 > 解决方案 > Rust 将 JSON 中表示为字符串的数字反序列化为结构

问题描述

我是新手,在将 json 字符串反序列化为结构时遇到了麻烦。我想要的是反序列化以下 json 字符串,

{
   "ratelimit_limit": "10",
   "ratelimit_remaining": "0",
   "ratelimit_reset": "30s"
}

进入以下结构。

#[derive(Deserialize, Debug, Clone)]
#[serde(default)]
struct FilterConfig {
   
    ratelimit_limit: u16,

    ratelimit_remaining: u16,

    #[serde(with = "serde_humanize_rs")]
    ratelimit_reset: Duration,
}

当我尝试将字符串反序列化为 u16 时,问题就来了。我认为问题在于从 serde 中删除的隐式转换。https://github.com/serde-rs/json/issues/317

该问题中提到的解决方案并未提供干净的解决方案。它使用自定义反序列化器来反序列化 u16 字段。有没有更简单直接的解决方案?这应该是一个非常常见的用例。

标签: rustdeserializationrust-cargoserde

解决方案


推荐阅读