首页 >> 知识 >> 自定义反序列化器,用于反序列化任意类型的 HashMap

自定义反序列化器,用于反序列化任意类型的 HashMap

我遇到了一个棘手的情况,我有一组键值对,并且我需要一个自定义 serde 反序列化器(serde 文档中的自定义数据格式)可以将这些对映射到结构上。

键值对看起来像这样:

("device:address:ip", "127.0.0.1"),("device:address:port", "9001"),("device:keys:0", "0000"),("device:keys:1", "1111"),

这个想法是能够在像这样的数据模型之上对它们进行反序列化:

struct DeviceAddress { ip: String, port: u16}struct DeviceConfig { address: DeviceAddress keys: Vec}struct Config { device: DeviceConfig}

在这种情况下,目标是将此类键值对的 HashMap,> 反序列化到 Config 结构上。我正在查看 **HashMap ** 作为解串器的输入,而不是 &str 输入。,>

为了尽可能清晰,serde 遍历数据模型:

反序列化结构(配置)反序列化结构体字段(设备)反序列化结构体(DeviceConfig)反序列化结构体字段(地址)反序列化结构体(DeviceAddress)反序列化结构体字段(ip)反序列化值(字符串)

我需要构建这个密钥:

设备:地址:IP

之后我可以在键值对的HashMap中查找值来解决第7步中的反序列化(解析struct字段的值)。

问题

我知道我需要采取什么方法来做到这一点;然而,我陷入困境的是反序列化器内,当 serde 反序列化基础设施遍历数据模型时,如何跟踪路径?

网站地图