У меня была похожая проблема с Jira API.
Если вы на 100% уверены, что эти пользовательские свойства не изменятся, то наверняка go динамический c маршрут.
Я интегрировался с несколькими экземплярами Jira, и у них были разные настраиваемые поля для одного и того же свойства, поэтому предпочтительным является более плавное отображение, поскольку это может быть выполнено динамически из некоторой конфигурации.
Это может быть достигнуто с помощью CustomContractResolver
из JsonConvert
.
Пример:
return JsonConvert.DeserializeObject<JiraIssuePayload>(str, new JsonSerializerSettings()
{
ContractResolver = new CustomContractResolver(new Dictionary<string, string>
{
{"EpicName", "customfield_10011" },
{"Epic", "customfield_10012" }, // these could come from some configuration object
});
}
Здесь делается то, что вы говорите JsonConvert
десериализовать customfield_10011
для свойства EpicName
вашего типа ( и Epic
для другого).