title: Deserialize JSON using Newtonsoft.Json's JsonConvert.DeserializeObject<string>(jsonString)
body: <p>I was been working with an extension method using generics and Newtonsoft.Json's <code>JsonConvert.DeserializeObject&lt;TSource&gt;(jsonString)</code></p>
  <p>the serialization works as expected</p>
  <pre><code>string value = string.Empty;
  value = JsonConvert.SerializeObject(null);      //&quot;null&quot;
  value = JsonConvert.SerializeObject(&quot;null&quot;);    //&quot;null&quot;
  value = JsonConvert.SerializeObject(&quot;value&quot;);   //&quot;value&quot;
  value = JsonConvert.SerializeObject(&quot;&quot;);        //&quot;&quot; 
  </code></pre>
  <p>But when trying to Deserialize</p>
  <pre><code>string result = string.Empty;
  result = JsonConvert.DeserializeObject(&quot;null&quot;); //null, ok
  result = JsonConvert.DeserializeObject(&quot;value&quot;); //throwing error, expecting &quot;value&quot;
  result = JsonConvert.DeserializeObject(&quot;&quot;); //throwing error, expecting string.empty
  </code></pre>
  <blockquote>
  <p>Error: Unexpected character encountered while parsing value: v. Path '', line 0, position 0.</p>
  </blockquote>
  <p>now I'm used where <code>TSource : new ()</code> on the extension method, so that any string return types would be restricted as</p>
  <pre><code>public static TSource ExecuteScriptForData(this IJavaScriptExecutor javaScriptExecutor, string script, params object[] args) where TSource : new ()
  </code></pre>
  <p>which is not letting me to use interfaces like <code>IList</code>, <code>IPerson</code> or <code>ReadOnlyCollection</code> on <code>TSource</code></p>
  <p>Now Is there any way to configure the Deserializer so that it would be able to Deserialize strings as Serializer is producing ?</p>