55 lines
1.5 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|