title: JSON deserialize to List<T>
body: <p>I have an ASP.NET Web API GET endpoint </p>
  
  <pre><code>public class MyType
  {
    public bool Active { get; set; }
    public DateTime CreateDate { get; set; }
    public int Id { get; set; }
    public string Description { get; set; }
  }
  
  public class MyResponse
  {
    public List&lt;MyType&gt; Results { get; set; }
  }
  
  [HttpGet]
  public MyResponse GetResults()
  </code></pre>
  
  <p>For the case where Results contains 2 items , the json return string is </p>
  
  <pre><code>{"Results":[{"Active":true,"CreateDate":"2014-01-01T00:00:00","Id":1,"Description":"item 1 description"},{"Active":true,"CreateDate":"2014-01-01T00:00:00","Id":2,"Description":"item 2 description"}]}
  </code></pre>
  
  <p>On the client side I wish to deserialize the json to <code>List&lt;MyType&gt;</code></p>
  
  <p>( being a bit loose with the language in the name of brevity )</p>
  
  <pre><code>List&lt;MyType&gt; results = HttpResponseMessage.Content.ReadAsAsync&lt;List&lt;MyType&gt;&gt;(new [] { new JsonMediaTypeFormatter () }).Result;
  </code></pre>
  
  <p>but this throws exception</p>
  
  <pre><code>Newtonsoft.Json.JsonSerializationException: Cannot deserialize the current JSON object (e.g. {"name":"value"}) into type 'System.Collections.Generic.List`1[MyType]' because the type requires a JSON array (e.g. [1,2,3]) to deserialize correctly.
  To fix this error either change the JSON to a JSON array (e.g. [1,2,3]) or change the deserialized type so that it is a normal .NET type (e.g. not a primitive type like integer, not a collection type like an array or List&lt;T&gt;) that can be deserialized from a JSON object. JsonObjectAttribute can also be added to the type to force it to deserialize from a JSON object.
  
     at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateObject(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
     at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateValueInternal(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
     at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader, Type objectType, Boolean checkAdditionalContent)
     at Newtonsoft.Json.JsonSerializer.DeserializeInternal(JsonReader reader, Type objectType)
     at Newtonsoft.Json.JsonSerializer.Deserialize(JsonReader reader, Type objectType)
     at System.Net.Http.Formatting.JsonMediaTypeFormatter.&lt;&gt;c__DisplayClass8.&lt;ReadFromStreamAsync&gt;b__6()
     at System.Threading.Tasks.TaskHelpers.RunSynchronously[TResult](Func`1 func, CancellationToken cancellationToken)
  </code></pre>