将动态值附加到JSON配置值

本文关键字:JSON 配置 动态 | 更新日期: 2023-09-27 18:17:51

我正在尝试从我的c#应用程序中的JSON文件中读取配置。该场景是这样的,前缀将从配置中读取,后缀将在读取时动态追加。

json

{
  "Scenarios": [
    {
      "Name": "Flights",
      "IterationPrefix": "TeamIteration''ABC''123''",
      "ParentLinkId": 123
    },
    {
      "Name": "Parcels",
      "IterationPrefix": "TeamIteration''DEF''234''",
      "ParentLinkId": 234
    },
    {
      "Name": "Cars",
      "IterationPrefix": "TeamIteration''FEG''456''",
      "ParentLinkId": 456
    }
  ]
}

对象映射如下 ConfigMap.cs

public class AppConfig
{
    public Scenario[] Scenarios;
}
public class Scenario
{
    public string Name { get; set; }
    public string Iteration { get; set; }
    public string ParentLinkId { get; set; }
    private string GetIterationSuffix()
    {
        var quarters = new[] { 3, 3, 3, 4, 4, 4, 1, 1, 1, 2, 2, 2 };
        var currentDate = DateTime.Now;
        var month = currentDate.ToString("MMMM");
        var year = currentDate.Month <= 6 ? currentDate.Year : (currentDate.Year + 1);
        var quarter = quarters[currentDate.Month - 1];
        return "FY" + year + "''Q" + quarter + "''" + month;
    }
}

我想让Iteration等于IterationPrefix + GetIterationSuffix()。我不知道怎么才能做到。

我试图用以下方式反序列化

JsonConvert.DeserializeObject<AppConfig>(jsonstring);

提前感谢!

将动态值附加到JSON配置值

将GetIterationSuffix设置为静态和内部的,然后执行以下操作:

var scenarioDes = JsonConvert.DeserializeObject<AppConfig>(jsonstring);
scenarioDes.Iteration = GetIterationSuffix();