我遇到了一个棘手的情况,我有一组键值对,并且我需要一个自定义 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 反序列化基础设施遍历数据模型时,如何跟踪路径?
