Как реализовать подстановку переменных среды в файле конфигурации JSON, сериализуемом NewtonSoft.Json - PullRequest
0 голосов
/ 29 января 2019

В настоящее время я использую NewtonSoft.Json для преобразования между JSON и Config моделью.Я хотел бы иметь возможность принимать макросы переменных среды в JSON, например, так:

{
   ...,
   "myStringVar": "${MY_STRING}",
   "myArrayVar": ${MY_ARRAY},
   ...
}

В настоящее время я делаю это путем интерполяции необработанного JSON с переменными среды и последующей десериализации, например:

var interpolatedConfigText = configText.InterpolateWithEnvironmentVariables();
var config = JsonConvert.DeserializeObject<Config>(interpolatedConfigText, new StringEnumConverter());

Это работает достаточно хорошо, но очевидным недостатком является то, что когда я иду, чтобы сохранить этот файл, у меня нет записей о том, что некоторые параметры были фактически получены из переменных среды, поэтому те, которые были перезаписаны:

{
   ...,
   "myStringVar": "string value",
   "myArrayVar": [ 0, 1 ],
   ...
}

Есть ли умный способ, которым я могу включить собственный сериализатор, чтобы выполнить это без необходимости, скажем, изменять типы всех моих членов на какое-то представление, которое имеет как возможно нулевое имя переменной среды,а его актуальная стоимость?Просто ищу правильное направление для достижения чего-то подобного.

...