title: Conditionally deserialize property based on JSON token type
body: <p>In my API I would like to give consumers the option to send a property as either a string identifier or an object, for example:</p>
  
  <pre><code>{
      "source": "token_xyz"
  }
  </code></pre>
  
  <p>Or</p>
  
  <pre><code>{
      "source": {
          "name": "test"
      }
  }
  </code></pre>
  
  <p>Depending on the the type (string or object) I'd like to set a specific property on my class:</p>
  
  <pre><code>public class MyRequest
  {       
      [JsonProperty("source")]
      public SourceUser SourceUser { get; set; }
  
      [JsonProperty("source")]
      public string SourceToken { get; set; }
  }
  </code></pre>
  
  <p>As you can see, I tried decorating both properties with <code>JsonProperty("source")</code> but unfortunately this does not work - the object fails to deserialize.</p>
  
  <p>How can I deserialize to the appropriate property based on the JSON type?</p>