title: C# Deserialize JSON to List
body: <p>I have come across a problem I don't understand when trying to deserialize a JSON string (containing multiple objects) into a List. Here is the JSON.</p>
  
  <pre class="lang-json prettyprint-override"><code>[  
     {  
        "id":2,
        "name":"Race 1",
        "raceDateTime":"2017-09-02T14:27:39.654",
        "raceStartTime":"2017-09-02T14:27:39.654",
        "description":"string",
        "maxEntries":0,
        "currentEntries":0,
        "status":0
     },
     {  
        "id":3,
        "name":"Race 2",
        "raceDateTime":"2017-09-02T14:27:39.654",
        "raceStartTime":"2017-09-02T14:27:39.654",
        "description":"string",
        "maxEntries":0,
        "currentEntries":0,
        "status":0
     },
     {  
        "id":4,
        "name":"Race 3",
        "raceDateTime":"2017-09-02T14:27:39.654",
        "raceStartTime":"2017-09-02T14:27:39.654",
        "description":"string",
        "maxEntries":0,
        "currentEntries":0,
        "status":0
     },
     {  
        "id":5,
        "name":"Race 4",
        "raceDateTime":"2017-09-02T14:27:39.654",
        "raceStartTime":"2017-09-02T14:27:39.654",
        "description":"string",
        "maxEntries":0,
        "currentEntries":0,
        "status":0
     }
  ]
  </code></pre>
  
  <p>I then have the JSON parameters matching my Model.</p>
  
  <pre class="lang-cs prettyprint-override"><code>public class RaceModel
  {
  
      public int id { get; set; }
      public string name { get; set; }
      public DateTime raceDateTime { get; set; }
      public DateTime raceStartTime { get; set; }
      public string description { get; set; }
      public int maxEntries { get; set; }
      public int currentEntries { get; set; }
      public int status { get; set; }
  
  }
  
  public class RaceList
  {
      public List&lt;RaceList&gt; racelist { get; set; }
  }
  </code></pre>
  
  <p>And my code to get the JSON from the REST API request is below:</p>
  
  <pre class="lang-cs prettyprint-override"><code>string APIServer = Application.Current.Properties["APIServer"].ToString();
  string Token = Application.Current.Properties["Token"].ToString();
  var client = new RestClient(APIServer);
  var request = new RestRequest("api/race", Method.GET);
  request.AddHeader("Content-type", "application/json");
  request.AddHeader("Authorization", "Bearer " + Token);
  var response = client.Execute(request) as RestResponse;
  
  var raceobject = JsonConvert.DeserializeObject&lt;RaceList&gt;(response.Content);
  </code></pre>
  
  <p>But I get this error (Using Newtonsoft.JSON)</p>
  
  <pre><code>Cannot deserialize the current JSON array (e.g. [1,2,3]) into type 'TechsportiseApp.API.Models.RaceList' because the type requires a JSON object (e.g. {"name":"value"}) to deserialize correctly.
  To fix this error either change the JSON to a JSON object (e.g. {"name":"value"}) or change the deserialized type to an array or a type that implements a collection interface (e.g. ICollection, IList) like List&lt;T&gt; that can be deserialized from a JSON array. JsonArrayAttribute can also be added to the type to force it to deserialize from a JSON array.
  Path '', line 1, position 1.
  </code></pre>
  
  <p>I'd like to have a list/collection of objects I can then iterate through and work with.</p>
  
  <p>Can anyone advise what I've done wrong?</p>