我应该如何在NewtonSoft.Json序列化的JSON配置文件中实现环境变量替换

时间:2019-01-29 20:29:30

标签: json json.net interpolation

我目前使用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 ],
   ...
}

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

0 个答案:

没有答案