title: OnDeserialized callback with JsonConverter
body: <p>I´m trying to use the <code>JsonConverter</code> from <a href="https://stackoverflow.com/a/33094930/2120779">this answer</a> to <em><a href="https://stackoverflow.com/q/33088462/3744182">Can I specify a path in an attribute to map a property in my class to a child property in my JSON?</a></em> by <a href="https://stackoverflow.com/users/10263/brian-rogers">Brian Rogers</a> to map nested properties in JSON to a flat object.</p>
  
  <p>The converter works well, but I need to fire the <code>OnDeserialized</code> callback to fill other properties and it´s not fired. If I don´t use the converter, the callback is fired.</p>
  
  <p>Examples:</p>
  
  <pre class="lang-cs prettyprint-override"><code>string json = @"{
      'response': {
          'code': '000',
          'description': 'Response success',
      },
      'employee': {
          'name': 'Test',
          'surname': 'Testing',
          'work': 'At office'
      }
  }";
  </code></pre>
  
  <pre class="lang-cs prettyprint-override"><code>// employee.cs
  
  public class EmployeeStackoverflow
  {
      [JsonProperty("response.code")]
      public string CodeResponse { get; set; }
  
      [JsonProperty("employee.name")]
      public string Name { get; set; }
  
      [JsonProperty("employee.surname")]
      public string Surname { get; set; }
  
      [JsonProperty("employee.work")]
      public string Workplace { get; set; }
  
      [OnDeserialized]
      internal void OnDeserializedMethod(StreamingContext context)
      {
          Workplace = "At Home!!";
      }
  }
  </code></pre>
  
  <pre class="lang-cs prettyprint-override"><code>// employeeConverter.cs
  public class EmployeeConverter : JsonConverter
  {
      public override object ReadJson(JsonReader reader, Type objectType,
                                  object existingValue, JsonSerializer serializer)
      {
          JObject jo = JObject.Load(reader);
          object targetObj = Activator.CreateInstance(objectType);
  
          foreach (PropertyInfo prop in objectType.GetProperties()
                                                  .Where(p =&gt; p.CanRead &amp;&amp; p.CanWrite))
          {
              JsonPropertyAttribute att = prop.GetCustomAttributes(true)
                                              .OfType&lt;JsonPropertyAttribute&gt;()
                                              .FirstOrDefault();
  
              string jsonPath = (att != null ? att.PropertyName : prop.Name);
              JToken token = jo.SelectToken(jsonPath);
  
              if (token != null &amp;&amp; token.Type != JTokenType.Null)
              {
                  object value = token.ToObject(prop.PropertyType, serializer);
                  prop.SetValue(targetObj, value, null);
              }
          }
  
          return targetObj;
      }
  
      public override bool CanConvert(Type objectType)
      {
          // CanConvert is not called when [JsonConverter] attribute is used
          return false;
      }
  
      public override bool CanWrite
      {
          get { return false; }
      }
  
      public override void WriteJson(JsonWriter writer, object value,
                                      JsonSerializer serializer)
      {
          throw new NotImplementedException();
      }
  
  }
  </code></pre>
  
  <p>If I add <code>[JsonConverter(typeof(EmployeeConverter))]</code> in the Employee class I obtain:</p>
  
  <pre><code>=== With Converter ===
  Code: 000
  Name: Test
  Surname: Testing
  Workplace: At office
  </code></pre>
  
  <p>If I remove<code>[JsonConverter(typeof(EmployeeConverter))]</code> from the Employee class I obtain:</p>
  
  <pre><code>=== With Converter ===
  Code:
  Name:
  Surname:
  Workplace: At Home!!
  </code></pre>
  
  <p>My goal is to obtain:</p>
  
  <pre><code>=== With Converter ===
  Code: 000
  Name: Test
  Surname: Testing
  Workplace: At Home!!
  </code></pre>
  
  <p>Is the converter missing something?</p>