title: Cannot deserialize the current JSON object, WHY?
body: <p>I'm trying to use a WebApi to get a list of Employees from my data base, using this code:
  This is the code of my client MVC Application:</p>
  
  <pre><code>        string u = "http://localhost:1411/api/EmployeeAPI";
          Uri uri = new Uri(u);
  
          HttpClient httpClient = new HttpClient();
  
          Task&lt;HttpResponseMessage&gt; response = httpClient.GetAsync(uri);
  
          Task.WaitAll(response);
  
          HttpResponseMessage resposta = response.Result;
  
          var msg = resposta.Content.ReadAsStringAsync().Result;
  
          Employee[] employees = JsonConvert.DeserializeObject&lt;Employee[]&gt;(msg);
  
          return View(employees);
  </code></pre>
  
  <p>And this is the code of my WebAPI:</p>
  
  <pre><code>    public IEnumerable&lt;Employee&gt; GetEmployees()
      {
          return db.Employees.AsEnumerable();
      }
  </code></pre>
  
  <p>But this error keeps popping up and I can't understand why:</p>
  
  <blockquote>
    <p>Cannot deserialize the current JSON object (e.g. {"name":"value"})
    into type 'DataAccess.Employee[]' 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) 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. Path 'Message', line 1, position 11.</p>
  </blockquote>
  
  <p>My Employee Class:</p>
  
  <pre><code>namespace DataAccess
  {
      using System;
      using System.Collections.Generic;
  
      public partial class Employee
      {
          public Employee()
          {
              this.Products = new HashSet&lt;Product&gt;();
          }
  
          public int EmployeeId { get; set; }
          public string Title { get; set; }
          public string FirstName { get; set; }
          public string MiddleName { get; set; }
          public string LastName { get; set; }
          public byte[] rowguid { get; set; }
          public System.DateTimeOffset ModifiedDate { get; set; }
  
          public virtual ICollection&lt;Product&gt; Products { get; set; }
      }
  }
  </code></pre>
  
  <p>The Json output I'm not really sure how to get it</p>
  
  <p>The msg variable content:</p>
  
  <p>My msg variable returns</p>
  
  <p>"{\"Message\":\"An error has occurred.\",\"ExceptionMessage\":\"The 'ObjectContent`1' type failed to serialize the response body for content type 'application/json; charset=utf-8'.\",\"ExceptionType\":\"System.InvalidOperationException\",\"StackTrace\":null,\"InnerException\":{\"Message\":\"An error has occurred.\",\"ExceptionMessage\":\"Self referencing loop detected with type 'System.Data.Entity.DynamicProxies.ProductSubCategory_9EC9A3706390DE6A3B51F713F0DDAC2162AFB5B3FAB8F8587C9A865333A7729A'. Path '[0].Products[0].ProductSubCategory.ProductCategory.ProductSubCategories'.\",\"ExceptionType\":\"Newtonsoft.Json.JsonSerializationException\",\"StackTrace\":\"   at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.CheckForCircularReference(JsonWriter writer, Object value, JsonProperty property, JsonContract contract, JsonContainerContract containerContract, JsonProperty containerProperty)\r\n   at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeList(JsonWriter writer, IWrappedCollection values, JsonArrayContract contract, JsonProperty member, JsonContainerContract collectionContract, JsonProperty containerProperty)\r\n   at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeValue(JsonWriter writer, Object value, JsonContract valueContract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerProperty)\r\n   at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeObject(JsonWriter writer, Object value, JsonObjectContract contract, JsonProperty member, JsonContainerContract collectionContract, JsonProperty containerProperty)\r\n   at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeValue(JsonWriter writer, Object value, JsonContract valueContract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerProperty)\r\n   at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeObject(JsonWriter writer, Object value, JsonObjectContract contract, JsonProperty member, JsonContainerContract collectionContract, JsonProperty containerProperty)\r\n   at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeValue(JsonWriter writer, Object value, JsonContract valueContract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerProperty)\r\n   at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeObject(JsonWriter writer, Object value, JsonObjectContract contract, JsonProperty member, JsonContainerContract collectionContract, JsonProperty containerProperty)\r\n   at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeValue(JsonWriter writer, Object value, JsonContract valueContract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerProperty)\r\n   at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeList(JsonWriter writer, IWrappedCollection values, JsonArrayContract contract, JsonProperty member, JsonContainerContract collectionContract, JsonProperty containerProperty)\r\n   at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeValue(JsonWriter writer, Object value, JsonContract valueContract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerProperty)\r\n   at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeObject(JsonWriter writer, Object value, JsonObjectContract contract, JsonProperty member, JsonContainerContract collectionContract, JsonProperty containerProperty)\r\n   at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeValue(JsonWriter writer, Object value, JsonContract valueContract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerProperty)\r\n   at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeList(JsonWriter writer, IWrappedCollection values, JsonArrayContract contract, JsonProperty member, JsonContainerContract collectionContract, JsonProperty containerProperty)\r\n   at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeValue(JsonWriter writer, Object value, JsonContract valueContract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerProperty)\r\n   at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.Serialize(JsonWriter jsonWriter, Object value)\r\n   at Newtonsoft.Json.JsonSerializer.SerializeInternal(JsonWriter jsonWriter, Object value)\r\n   at System.Net.Http.Formatting.JsonMediaTypeFormatter.&lt;>c__DisplayClassd.b__c()\r\n   at System.Threading.Tasks.TaskHelpers.RunSynchronously(Action action, CancellationToken token)\"}}"</p>