title: SingleValueArrayConverter of an array returning null properties
body: <p>I'm trying to use a custom singlearrayconverter to access the values of my json array, but I keep getting null values, I'm wondering where I could be doing something wrong.</p>
  
  <p>I have the following JSON:</p>
  
  <pre><code>{
    "message": "success",
    "action": "user_info",
    "data": {
      "profile_info": {
        "querying": "0",
        "tps": {
          "1": {
            "profile_url": "anotherfakeurl",
            "file_hash": "hash",
            "icon_path": "",
            "time_of_insertion": "0000-00-00 00:00:00",
            "tp_id": "1",
            "user_id": "4",
            "tp_user_id": "1377839182243200",
            "last_use": "0000-00-00 00:00:00",
            "active": "0",
            "user_display": "it's a me",
            "selected": "1",
            "prof_pic": "fakeurl"
          }
        }
      }
    }
  }
  </code></pre>
  
  <p>And I have the following datamodel:</p>
  
  <pre><code>[JsonProperty("tps")]
  [JsonConverter(typeof(SingleValueArrayConverter&lt;Tps&gt;))]
  public List&lt;Tps&gt; TpsList { get; set; }
  </code></pre>
  
  <p>And I'm using this converter:</p>
  
  <pre><code>public class SingleValueArrayConverter&lt;T&gt; : JsonConverter
      {
          public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
          {
              throw new NotImplementedException();
          }
  
  
  
  public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
      {
          object retVal = new Object();
          if (reader.TokenType == JsonToken.StartObject)
          {
              T instance = (T)serializer.Deserialize(reader, typeof(T));
              retVal = new List&lt;T&gt;() { instance };
          }
          else if (reader.TokenType == JsonToken.StartArray)
          {
              retVal = serializer.Deserialize(reader, objectType);
          }
          return retVal;
      }
  
      public override bool CanConvert(Type objectType)
      {
          return false;
      }
  }
  </code></pre>
  
  <p>And every other value is correct, it even gives me the right array count. But the contents of each Tps property are either empty or null.</p>
  
  <p>Thank you,</p>
  
  <p>edit: Here is the full Data Model.</p>
  
  <pre><code>[JsonObject(MemberSerialization = MemberSerialization.OptIn)]
      public class UserInfo
      {
          [JsonProperty("message")]
          public string Message { get; set; }
  
          [JsonProperty("action")]
          public string Action { get; set; }
  
          [JsonProperty("data")]
          public Data Data { get; set; }
  }
  
  
  public class Data
      {
  
          [JsonProperty("profile_info")]
          public ProfileInformation ProfileInformation { get; set; }
      }
  
  public class ProfileInformation
      {
      [JsonProperty("querying")]
          public string Querying { get; set; }
  
      [JsonProperty("tps")]
          [JsonConverter(typeof(SingleValueArrayConverter&lt;Tps&gt;))]
          public List&lt;Tps&gt; TpsList { get; set; }
      }
  
  public class Tps
      {
      [JsonProperty("profile_url")]
          public string ProfileUrl { get; set; }
  
          [JsonProperty("file_hash")]
          public string FileHash { get; set; }
  
          [JsonProperty("icon_path")]
          public string IconPath { get; set; }
  
          [JsonIgnore]
          [JsonProperty("time_of_insertion")]
          public DateTime TimeOfInsertion { get; set; }
  
          [JsonProperty("tp_id")]
          public int TpId { get; set; }
  
          [JsonProperty("user_id")]
          public int UserId { get; set; }
  
          [JsonProperty("tp_user_id")]
          public long TpUserId { get; set; }
  
          [JsonIgnore]
          [JsonProperty("last_use")]
          public DateTime LastUse { get; set; }
  
          [JsonProperty("active")]
          public string Active { get; set; }
  
          [JsonProperty("user_display")]
          public string UserDisplay { get; set; }
  
          [JsonProperty("selected")]
          public string Selected { get; set; }
  
          [JsonProperty("prof_pic")]
          public string ProfilePicture { get; set; }
      }
  </code></pre>