我目前使用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 ],
...
}
是否有一种巧妙的方法可以合并自定义序列化器来完成此操作,而不必将我所有成员的类型更改为某种表示形式,该表示形式既具有可能为空的环境变量名称,又具有其实际值。值?只是寻找正确的方向去实现这样的目标。