CSharp.Template/YuanXuan.IM.Api/Filters/CustomJsonNamingPolicy.cs

55 lines
1.5 KiB
C#

using System.Runtime.Intrinsics.X86;
using System.Text;
using System.Text.Json;
using System.Text.RegularExpressions;
namespace LearningOfficer.OA.Mobile.Api.Filters
{
public class CustomJsonNamingPolicy : JsonNamingPolicy
{
public override string ConvertName(string name)
{
//第一个字母小写
if (string.IsNullOrEmpty(name))
{
return name;
}
if (name.Length > 1 && char.IsUpper(name[0]))
{
name = char.ToLower(name[0]) + name.Substring(1);
}
return ChangeName(name);
}
private string ChangeName(string name)
{
Match mt = Regex.Match(name, @"_(\w*)*");
if (mt.Success)
{
var sb = new StringBuilder();
bool toUpper = false;
for (int i = 0; i < name.Length; i++)
{
char c = name[i];
if (c == '_')
{
toUpper = true;
}
else
{
sb.Append(toUpper ? char.ToUpperInvariant(c) : c);
toUpper = false;
}
}
if (sb.Length > 0)
{
sb[0] = char.ToLowerInvariant(sb[0]);
}
return sb.ToString();
}
return name;
}
}
}