Rust 有没有办法在运行时指定要插入的字段名?
我尝试使用反序列化JSON结构,但其中一些字段名在不同的环境中可能不同。例如: 在dev中:Rust 有没有办法在运行时指定要插入的字段名?,rust,deserialization,json-deserialization,serde,serde-json,Rust,Deserialization,Json Deserialization,Serde,Serde Json,我尝试使用反序列化JSON结构,但其中一些字段名在不同的环境中可能不同。例如: 在dev中: { "fields": { "field004": "This is the title", "field012": 456123 } } 在产品中: { "fields": { "field023": &quo
{
"fields": {
"field004": "This is the title",
"field012": 456123
}
}
在产品中:
{
"fields": {
"field023": "This is the title",
"field005": 456123
}
}
由于名称不会随时间变化,我将它们存储在一个外部配置中,可以在运行时轻松地检索到应用程序中,但我希望避免将它们硬编码到我构建的结构中以处理反序列化(如中)我无法找到一种方法来获取从我的配置中检索到的字段名,以便在反序列化中使用
我在搜索解决方案时发现的所有其他结果都没有解决我遇到的特定问题
是否有一种方法可以在运行时指定字段的名称,或者我必须手动为其实现反序列化程序,并以这种方式使用config fed字段名称?如果您使用。否则,如果不在属性中列出选项,我认为您无法完成此操作。@Herohtar谢谢您的建议。我曾经考虑过这一点,但是我正在使用的JSON的结构实际上相当深,所以一旦我得到
值
,我就有很多工作要做。我几乎最终实现了一个反序列化程序,但方式不同。是否可以在prod中使用dev中的相同字段名来实现不同的目的?@PeterHall,很遗憾,是的。@Sidhland您可以为字段
创建一个专用结构,通过这种方式,您可以根据环境变量随意转换字段。或者,如果在编译时知道“dev”与“prod”的区别,您可以只使用一个条件结构(一个版本将为生产环境定制,另一个版本为开发环境定制)。