title: Aspnet core json serialization - camelCase naming strategy should only change casing on first character
body: <p>I'm working with an old legacy project with interesting entity property naming. My task is to replace Nancy modules with MVC API Controllers. What I want to achieve here is to serialize the JSON response from controllers where only the first character in DTO property names are affected.</p>
  <p>Here is my issue:</p>
  <p>Example:</p>
  <pre><code>public class FooDto
  {
    public string INFooBar { get; set; }
  }
  </code></pre>
  <p>This is serialized to:</p>
  <pre><code>{
    &quot;inFooBar&quot;: null
  }
  </code></pre>
  <p>aspnet core 3.1 is using CamelCaseNaming strategy by default and this is totally correct serialization to camel case but what I want to achieve is (the system has a lot of consumers, so the serialization must not be changed):</p>
  <pre><code>{
    &quot;iNFooBar&quot;: null
  }
  </code></pre>
  <p>The old Nancy endpoints are doing this somehow.</p>
  <p>My work around is to override the DefaultNamingStrategy and explicitly lower case the first character in a Custom naming strategy:</p>
  <pre><code>public class CustomNamingStrategy : DefaultNamingStrategy
      {
          protected override string ResolvePropertyName(string name)
          {
              var pascalCasingName = base.ResolvePropertyName(name);
              var firstCharacterLower = pascalCasingName.Substring(0, 1). ToLowerInvariant();
              var result = $&quot;{firstCharacterLower}{pascalCasingName.Remove(0, 1)}&quot;;
              return result;
          }
      }
  </code></pre>
  <p>Startup.cs:</p>
  <pre><code>services.AddMvc()
    .AddNewtonsoftJson(options =&gt;
      {
        options.SerializerSettings.ContractResolver = new DefaultContractResolver
          {
            NamingStrategy = new CustomNamingStrategy()
          };
      });
  </code></pre>
  <p>My questions are:</p>
  <ul>
  <li>Is there any built-in support for this behaviour, that I have missed?</li>
  <li>Does anyone else have a more clever solution for this issue?</li>
  </ul>