将对象序列化为具体类,而不是IEnumerable

时间:2016-11-29 09:40:31

标签: c# serialization json.net

鉴于以下课程:

public sealed class GorpCollection : IEnumerable<Gorp> {
   private readonly IReadOnlyCollection<Gorp> _gorps;
   public GorpCollection(string name, IEnumerable<Gorp> gorps) {
      _gorps = gorps.ToList().AsReadOnly();
      GorpType1 = _gorps.Where(gorp => gorp.GorpType == 1).ToList().AsReadOnly();
      GorpType2 = _gorps.Where(gorp => gorp.GorpType == 2).ToList().AsReadOnly();
      Name = name;
   }

   public string Name { get; }
   public IReadOnlyCollection GorpType1 { get; }
   public IReadOnlyCOllection GorpType2 { get; }

   public IEnumerator<Gorp> GetEnumerator => _gorps.GetEnumerator();
   IEnumerator IEnumerable.GetEnumerator() => ((IEnumerable) _gorps).GetEnumerator();
}

我想将它作为具体类序列化为JSON对象,而不是作为数组出现的IEnumerable。我对要序列化的属性NameGorpType1GorpType2感到满意。

最简单的方法是使用自定义转换器,绑定器和设置最少搞乱?我会想到一个简单的属性,例如[SerializeAs(typeof(GorpCollection))]。但是后来进行了大量的搜索,我仍然不知道如何完成这项工作。

0 个答案:

没有答案