title: How to serialize enums to different property name using json.net
body: <p>I have the following enum</p>
  
  <pre><code>public enum PermissionType
  {
    [JsonProperty(PropertyName = "can_fly")]
    PermissionToFly,
    [JsonProperty(PropertyName = "can_swim")]
    PermissionToSwim
  };
  </code></pre>
  
  <p>and a class with this property</p>
  
  <pre><code>[JsonProperty(PropertyName = "permissions", ItemConverterType = typeof(StringEnumConverter))]
  public IList&lt;PermissionType&gt; PermissionKeynames { get; set; }`
  </code></pre>
  
  <p>I want to serialize the list of enumerations to a list of strings, and that serialize list use the string specified in <code>PropertyName</code> (such as "can_swim") instead of the property's actual name "PermissionToSwim".  However, whenever I call JsonConvert.SerializeObject, I end up with </p>
  
  <pre><code>"permission_keynames":["PermissionToFly","PermissionToSwim"]
  </code></pre>
  
  <p>instead of my desired </p>
  
  <pre><code>"permission_keynames":["can_fly","can_swim"]
  </code></pre>
  
  <p>I want to keep the phrase "PermissionToSwim" for use in my code, serialize to another word.  Any idea how I can achieve this?  My gut says that the annotation is the culprit, but I haven't been able to find the correct one.</p>