using System.Text; using System.Text.Json; namespace YandexMusic.API.Common.Ynison; /// Политика именования в формате UPPER_SNAKE_CASE (все буквы верхнего регистра, слова через подчёркивание). public class UpperSnakeCaseNamingPolicy : SnakeCaseNamingPolicy { /// Преобразует имя свойства в формат UPPER_SNAKE_CASE. public override string ConvertName(string name) { var snakeCase = base.ConvertName(name); return snakeCase.ToUpperInvariant(); } } /// Базовая политика именования в формате snake_case (все буквы нижнего регистра, слова через подчёркивание). public class SnakeCaseNamingPolicy : JsonNamingPolicy { /// Преобразует имя свойства в формат snake_case. public override string ConvertName(string name) { if (string.IsNullOrEmpty(name)) return name; var sb = new StringBuilder(); for (int i = 0; i < name.Length; i++) { char c = name[i]; if (char.IsUpper(c)) { if (i > 0) sb.Append('_'); sb.Append(char.ToLowerInvariant(c)); } else { sb.Append(c); } } return sb.ToString(); } }