Я пытаюсь десериализовать структуру JSON с помощью serde, но где некоторые поля имена могут быть разными в разных средах. Например:
В dev:
{
"fields": {
"field004": "This is the title",
"field012": 456123
}
}
В продукте:
{
"fields": {
"field023": "This is the title",
"field005": 456123
}
}
Поскольку имена не меняются со временем, у меня они хранятся во внешней конфигурации, которую можно легко извлечь в приложение во время выполнения, но я хочу избежать необходимости жестко закодировать их в структурах, которые я создал для обработки десериализации. (например, в этом вопросе), и я не могу найти способ получить имена полей, извлеченные из моей конфигурации, для использования при десериализации.
Все остальные результаты, которые я обнаружил при поиске решения этой проблемы, не касаются моей конкретной проблемы.
Есть ли способ указать имя поля во время выполнения, или мне придется вручную реализовать для него десериализатор и таким образом использовать имена полей, заданные конфигурацией?
Value
. Я почти закончил реализацию десериализатора, но по-другому. - person Sid Holland   schedule 16.08.2020fields
с помощью пользовательской схемы десериализации, таким образом, вы можете трансформируйте поля, как хотите, возможно, на основе envvar. В качестве альтернативы, если во время компиляции известно, что такое dev и prod, вы можете просто использовать условную структуру (одна версия будет настроена для производственной среды, а другая - для среды разработки). - person Masklinn   schedule 16.08.2020