title: Newtonsoft JsonSerializer - Lower case properties and dictionary
body: <p>I'm using json.net (Newtonsoft's JsonSerializer). I need to customize serialization in order to meet following requirements:</p>
  
  <ol>
  <li>property names must start with lower case letter.</li>
  <li>Dictionary must be serialized into jsonp where keys will be used for property names. LowerCase rule does not apply for dictionary keys.</li>
  </ol>
  
  <p>for example:</p>
  
  <pre><code>var product = new Product();
  procuct.Name = "Product1";
  product.Items = new Dictionary&lt;string, Item&gt;();
  product.Items.Add("Item1", new Item { Description="Lorem Ipsum" });
  </code></pre>
  
  <p>must serialize into:</p>
  
  <pre><code>{
    name: "Product1",
    items : {
      "Item1": {
         description : "Lorem Ipsum"
      }
    }
  }
  </code></pre>
  
  <p>notice that property Name serializes into "name", but key Item1 serializes into "Item1";</p>
  
  <p>I have tried to create CustomJsonWriter to serialize property names, but it changes also dicionary keys.</p>
  
  <pre><code>public class CustomJsonWriter : JsonTextWriter
  {
      public CustomJsonWriter(TextWriter writer) : base(writer)
      {
  
      }
      public override void WritePropertyName(string name, bool escape)
      {
          if (name != "$type")
          {
              name = name.ToCamelCase();
          }
          base.WritePropertyName(name, escape);
      }
  }
  </code></pre>