title: JsonSerializationException: Unable to find a constructor to use for type ... Path 'data', line 1, position 83
body: <p>This is my Json String returned from my webapi wroten by ASP.NET Core 2.0:</p>
  
  <pre><code>{
      "httpStatusCode": 200,
      "isSuccess": true,
      "errorCode": null,
      "errorDetail": null,
      "data": []
  }
  </code></pre>
  
  <p>In my client I use Newtonsoft.Json to deserialize the JsonString.</p>
  
  <pre><code>JsonConvert.DeserializeObject&lt;JsonMessage&lt;T&gt;&gt;(jsonString);
  </code></pre>
  
  <p>In <code>JsonMessage</code> the <code>T</code> is <code>PageList</code>, In <code>Pagelist</code> the <code>T</code> is <code>Team</code>.</p>
  
  <p>Is it too many level?</p>
  
  <p>But there is a exception that:</p>
  
  <blockquote>
    <p>JsonSerializationException: Unable to find a constructor to use for
    type Tower.Abstraction.PagedList<code>1[Tower.Abstraction.Model.Team]. Path
    'data', line 1, position 83.
    JsonSerializationException: Unable to find a constructor to use for type Tower.Abstraction.PagedList</code>1[Tower.Abstraction.Model.Team]. Path 'data', line 1, position 83.</p>
  </blockquote>
  
  <pre><code>Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateNewList(JsonReader reader, JsonArrayContract contract, out bool createdFromNonDefaultCreator)
  Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateList(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, object existingValue, string id)
  Newtonsoft.Json.Serialization.JsonSerializerInternalReader.SetPropertyValue(JsonProperty property, JsonConverter propertyConverter, JsonContainerContract containerContract, JsonProperty containerProperty, JsonReader reader, object target)
  Newtonsoft.Json.Serialization.JsonSerializerInternalReader.PopulateObject(object newObject, JsonReader reader, JsonObjectContract contract, JsonProperty member, string id)
  Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateObject(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, object existingValue)
  Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader, Type objectType, bool checkAdditionalContent)
  Newtonsoft.Json.JsonSerializer.DeserializeInternal(JsonReader reader, Type objectType)
  Newtonsoft.Json.JsonConvert.DeserializeObject(string value, Type type, JsonSerializerSettings settings)
  Newtonsoft.Json.JsonConvert.DeserializeObject&lt;T&gt;(string value, JsonSerializerSettings settings)
  </code></pre>
  
  <p>It works well when the data is not PagedList.</p>
  
  <p>The class structure:</p>
  
  <pre><code>using System;
  using System.Net;
  using System.Runtime.Serialization;
  
  namespace Tower.Web
  {
      [Serializable]
      [DataContract]
      public class JsonMessage&lt;T&gt;
      {
          [DataMember]
          public HttpStatusCode HttpStatusCode { get; set; }
          [DataMember]
          public bool IsSuccess { get; set; }
          [DataMember]
          public string ErrorCode { get; set; }
          [DataMember]
          public string ErrorDetail { get; set; }
          [DataMember]
          public T Data { get; set; }
      }
  }
  
  
  [Serializable]
  [DataContract]
  public class PagedList&lt;T&gt; : List&lt;T&gt;
  {
      [DataMember]
      public long TotalCount { get; set; }
      [DataMember]
      public int PageIndex { get; set; }
      [DataMember]
      public int PageSize { get; set; }
  }
  
  [DataContract]
  [Serializable]
  public class Team : Base
  {
      [Required]
      [Key]
      [DataMember]
      public Guid TeamId { get; set; }
      [DataMember]
      [Required]
      public string TeamName { get; set; }
      [DataMember]
      public decimal TimeZone { get; set; }
      [DataMember]
      public string TeamDescription { get; set; }
      [DataMember]
      public Guid AdminUserId { get; set; }
  }
  </code></pre>