title: Custom JsonConverter not working when using JsonReader instead of JsonSerializer
body: <p>I have a class <code>Foo</code> and its <code>FooConverter</code> as defined below:</p>
  
  <pre><code>[JsonConverter(typeof(FooConverter))]
  public class Foo
  {
      public string Something { get; set; }
  }
  
  public class FooConverter : JsonConverter
  {
      public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
      {
          writer.WriteValue(((Foo)value).Something);
      }
  
      public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
      {
          var str = reader.ReadAsString();
          if (str == null)
          {
              throw new JsonSerializationException();
          }    
          // return new Foo {Something = serializer.Deserialize&lt;string&gt;(reader)};
          return new Foo {Something = str};
      }
  
      public override bool CanConvert(Type objectType)
      {
          return objectType == typeof(Foo);
      }
  }
  </code></pre>
  
  <p>Serializing works fine. But when deserializing: </p>
  
  <pre><code>var foo = JsonConvert.DeserializeObject&lt;Foo&gt;("\"something\"");
  </code></pre>
  
  <p>it throws <code>JsonSerializationException</code> because <code>reader.ReadAsString</code> is null.<br>
  But I don't understand why it has to be <code>null</code>... <code>reader.ReadAsString</code> works perfectly find if I'm doing it manually like so:</p>
  
  <pre><code>var reader = new JsonTextReader(new StringReader("\"something\""));
  var str = reader.ReadAsString(); // str is now `something` NOT null
  </code></pre>
  
  <p>Although I can fix <code>FooConverter</code> by using <code>serializer.Deserialize&lt;string&gt;(reader)</code> in <code>ReadJson</code>, I still want to understand why <code>reader.ReadAsString</code> fails in <code>FooConverter.ReadJson</code>.</p>