title: Deserialize JSON using annotated property names and serialize using original property names (ignoring annotations)
body: <p>I receive JSON from an external service, and said JSON can have field names that don't work well with C# naming rules. Such as </p>
  
  <pre><code>"$" : {//object definition here} 
  </code></pre>
  
  <p>I can't name my classes as a single '$'. I'm using System.Runtime.Serialization data annotations to specify a field from which to deserialize this weirdly named object: </p>
  
  <pre><code> [DataMember(Name = "$")]
   public Item Info { get; set; }
  </code></pre>
  
  <p>Deserialization works, but now I would like to format this a bit better so that it wouldn't get serialized back to to <code>"$" : {//object definition here}</code> again. Is there a way I could specify a serialization rule that says that this field needs to be serialized with property name <code>Info</code> while still being deserialized from a member named <code>$</code>? What I would like the user of my service to see is this: </p>
  
  <pre><code>"Info" : {//object definition here} 
  </code></pre>