title: Newtonsoft JsonConvert.SerializeObject ignoring JsonProperty if name is uppercase
body: <p>I want to be able to use the <code>CamelCasePropertyNameContractResolver</code> but override it for specific property names. For this, I use the <code>JsonProperty</code> attribute. This works fine except when the name that I choose is fully uppercase. Any ideas what's wrong or how to get around it? </p>
  
  <p>In the example below, <code>Bar</code> is serialized to <code>"BAR"</code> when I don't use the CamelCasePropertyNameContractResolver, but is serialized to <code>"bar"</code> when I do use the resolver. <code>Foo</code> and <code>CamelCaseProperty</code> are serialized correctly in both scenarios.</p>
  
  <pre><code>using Newtonsoft.Json;
  using Newtonsoft.Json.Serialization;
  
  namespace ConsoleTester
  {
      class Program
      {
          static void Main(string[] args)
          {
              var foo = new FooBar {CamelCaseProperty = "test", Foo = "test", Bar = "test" };
              var output = JsonConvert.SerializeObject(foo);
              // output "CamelCaseProperty", "fOO", "BAR"
  
              var output2 = JsonConvert.SerializeObject(foo, new JsonSerializerSettings { ContractResolver = new CamelCasePropertyNamesContractResolver() });
              // output "camelCaseProperty", "fOO", "bar"
          }
      }
  
      public class FooBar
      {
          public string CamelCaseProperty { get; set; }
          [JsonProperty("fOO")]
          public string Foo { get; set; }
          [JsonProperty("BAR")]
          public string Bar { get; set; }
      }
  }
  </code></pre>