动态密钥JSON反序列化无法正常工作

时间:2018-02-27 13:07:46

标签: c# json serialization

我有一个JSON数据,如下所示

{
  "openingTimes": {
    "general": {
      "monday": [{
        "opens": "09:00",
        "closes": "18:00"
      }],
      "tuesday": [{
        "opens": "09:00",
        "closes": "18:00"
      }],
      "wednesday": [{
        "opens": "09:00",
        "closes": "18:00"
      }],
      "thursday": [{
        "opens": "09:00",
        "closes": "18:00"
      }],
      "friday": [{
        "opens": "09:00",
        "closes": "18:00"
      }],
      "saturday": [],
      "sunday": []
    },
    "alterations": {
      "2012-12-31": [{
        "opens": "09:00",
        "closes": "12:30"
      }, {
        "opens": "13:30",
        "closes": "18:00"
      }],
      "2012-12-24": [{
        "opens": "09:00",
        "closes": "12:30"
      }, {
        "opens": "13:30",
        "closes": "18:00"
      }],
      "2012-12-25": [],
      "2012-12-26": []
    }
  }
}

我创建了如下的类:

public class OpeningTimes
{
    public OpeningGeneral General { get; set; }
    public OpeningAlterations Alterations { get; set; }
}

public class OpeningGeneral
{
    public List<Hours> Sunday { get; set; }
    public List<Hours> Monday { get; set; }
    public List<Hours> Tuesday { get; set; }
    public List<Hours> Wednesday { get; set; }
    public List<Hours> Thursday { get; set; }
    public List<Hours> Friday { get; set; }
    public List<Hours> Saturday { get; set; }
}

public class Hours
{
    public string Opens { get; set; }
    public string Closes { get; set; }
}

public class OpeningAlterations
{
    //**UNABLE TO DESIGN**
}

您能否建议如何编写OpeningAlterations类?

2 个答案:

答案 0 :(得分:0)

一种方法是使用带有对象数组的Dictionary,例如

public class OpeningTimes
{
    public OpeningGeneral General { get; set; }
    public Dictionary<string, Alteration[]> Alterations { get; set; }
}

public class Alteration
{
    public string Opens { get; set; }
    public string Closes { get; set; }
}

答案 1 :(得分:0)

从搜索网络开始,我建议您使用Dictionary代替您的OpeningAlterations课程。

您的词典应如下所示:

public Dictionary<string, Hours[]> Alterations { get; set; }