BigCamelCasePropertyNamesContractResolver.cs 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. using System.Globalization;
  2. using Newtonsoft.Json.Serialization;
  3. namespace ShwasherSys
  4. {
  5. public class BigCamelCasePropertyNamesContractResolver : CamelCasePropertyNamesContractResolver
  6. {
  7. /// <summary>
  8. /// Initializes a new instance of the <see cref="T:Newtonsoft.Json.Serialization.CamelCasePropertyNamesContractResolver" /> class.
  9. /// </summary>
  10. public BigCamelCasePropertyNamesContractResolver()
  11. {
  12. CamelCaseNamingStrategy caseNamingStrategy = new BigCamelCaseNamingStrategy();
  13. NamingStrategy = caseNamingStrategy;
  14. }
  15. }
  16. public class BigCamelCaseNamingStrategy : CamelCaseNamingStrategy
  17. {
  18. protected override string ResolvePropertyName(string name)
  19. {
  20. return ToBigCamelCase(name);
  21. }
  22. public static string ToBigCamelCase(string s)
  23. {
  24. if (string.IsNullOrEmpty(s) || !char.IsLower(s[0]))
  25. return s;
  26. char[] charArray = s.ToCharArray();
  27. for (int index = 0; index < charArray.Length && (index != 1 || char.IsUpper(charArray[index])); ++index)
  28. {
  29. bool flag = index + 1 < charArray.Length;
  30. if (!(index > 0 & flag) || char.IsUpper(charArray[index + 1]))
  31. {
  32. char uper = char.ToUpper(charArray[index], CultureInfo.InvariantCulture);
  33. charArray[index] = uper;
  34. }
  35. else
  36. break;
  37. }
  38. return new string(charArray);
  39. }
  40. }
  41. }