diff --git a/src/Cnblogs.DashScope.Core/Cnblogs.DashScope.Core.csproj b/src/Cnblogs.DashScope.Core/Cnblogs.DashScope.Core.csproj
index 7d46d37..b164ed0 100644
--- a/src/Cnblogs.DashScope.Core/Cnblogs.DashScope.Core.csproj
+++ b/src/Cnblogs.DashScope.Core/Cnblogs.DashScope.Core.csproj
@@ -13,6 +13,7 @@
+
diff --git a/src/Cnblogs.DashScope.Core/DashScopeClientCore.cs b/src/Cnblogs.DashScope.Core/DashScopeClientCore.cs
index fdbed71..e0f3159 100644
--- a/src/Cnblogs.DashScope.Core/DashScopeClientCore.cs
+++ b/src/Cnblogs.DashScope.Core/DashScopeClientCore.cs
@@ -18,7 +18,7 @@ public class DashScopeClientCore : IDashScopeClient
new()
{
DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull,
- PropertyNamingPolicy = JsonSnakeCaseLowerNamingPolicy.SnakeCaseLower,
+ PropertyNamingPolicy = JsonNamingPolicy.SnakeCaseLower
};
private readonly HttpClient _httpClient;
diff --git a/src/Cnblogs.DashScope.Core/Internals/JsonSeparatorNamingPolicy.cs b/src/Cnblogs.DashScope.Core/Internals/JsonSeparatorNamingPolicy.cs
deleted file mode 100644
index 761ae20..0000000
--- a/src/Cnblogs.DashScope.Core/Internals/JsonSeparatorNamingPolicy.cs
+++ /dev/null
@@ -1,128 +0,0 @@
-using System.Buffers;
-using System.Globalization;
-using System.Runtime.CompilerServices;
-using System.Text.Json;
-
-namespace Cnblogs.DashScope.Core.Internals;
-
-// back-porting from dotnet/runtime
-internal abstract class JsonSeparatorNamingPolicy : JsonNamingPolicy
-{
- private readonly bool _lowercase;
- private readonly char _separator;
-
- internal JsonSeparatorNamingPolicy(bool lowercase, char separator)
- {
- _lowercase = lowercase;
- _separator = separator;
- }
-
- public sealed override string ConvertName(string? name)
- {
- if (name == null)
- {
- throw new ArgumentNullException(nameof(name));
- }
-
- return ConvertNameCore(_separator, _lowercase, name.AsSpan());
- }
-
- private static string ConvertNameCore(char separator, bool lowercase, ReadOnlySpan chars)
- {
- var rentedBuffer = (char[]?)null;
- var minimumLength = (int)(1.2 * chars.Length);
- var destination = minimumLength > 128 /*0x80*/
- ? (Span)(rentedBuffer = ArrayPool.Shared.Rent(minimumLength))
- : stackalloc char[128 /*0x80*/];
- var separatorState = SeparatorState.NotStarted;
- var charsWritten = 0;
- for (var index = 0; index < chars.Length; ++index)
- {
- var c = chars[index];
- var unicodeCategory = char.GetUnicodeCategory(c);
- switch (unicodeCategory)
- {
- case UnicodeCategory.UppercaseLetter:
- switch (separatorState)
- {
- case SeparatorState.UppercaseLetter:
- if (index + 1 < chars.Length && char.IsLower(chars[index + 1]))
- {
- WriteChar(separator, ref destination);
- }
-
- break;
- case SeparatorState.LowercaseLetterOrDigit:
- case SeparatorState.SpaceSeparator:
- WriteChar(separator, ref destination);
- break;
- }
-
- if (lowercase)
- c = char.ToLowerInvariant(c);
- WriteChar(c, ref destination);
- separatorState = SeparatorState.UppercaseLetter;
- break;
- case UnicodeCategory.LowercaseLetter:
- case UnicodeCategory.DecimalDigitNumber:
- if (separatorState == SeparatorState.SpaceSeparator)
- WriteChar(separator, ref destination);
- if (!lowercase && unicodeCategory == UnicodeCategory.LowercaseLetter)
- c = char.ToUpperInvariant(c);
- WriteChar(c, ref destination);
- separatorState = SeparatorState.LowercaseLetterOrDigit;
- break;
- case UnicodeCategory.SpaceSeparator:
- if (separatorState != SeparatorState.NotStarted)
- {
- separatorState = SeparatorState.SpaceSeparator;
- }
-
- break;
- default:
- WriteChar(c, ref destination);
- separatorState = SeparatorState.NotStarted;
- break;
- }
- }
-
- var str = destination.Slice(0, charsWritten).ToString();
- if (rentedBuffer != null)
- {
- destination.Slice(0, charsWritten).Clear();
- ArrayPool.Shared.Return(rentedBuffer);
- }
-
- return str;
-
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- void WriteChar(char value, ref Span destination)
- {
- if (charsWritten == destination.Length)
- ExpandBuffer(ref destination);
- destination[charsWritten++] = value;
- }
-
- void ExpandBuffer(ref Span destination)
- {
- var destination1 = ArrayPool.Shared.Rent(checked(destination.Length * 2));
- destination.CopyTo((Span)destination1);
- if (rentedBuffer != null)
- {
- destination.Slice(0, charsWritten).Clear();
- ArrayPool.Shared.Return(rentedBuffer);
- }
-
- rentedBuffer = destination1;
- destination = (Span)rentedBuffer;
- }
- }
-
- private enum SeparatorState
- {
- NotStarted,
- UppercaseLetter,
- LowercaseLetterOrDigit,
- SpaceSeparator,
- }
-}
diff --git a/src/Cnblogs.DashScope.Core/Internals/JsonSnakeCaseLowerNamingPolicy.cs b/src/Cnblogs.DashScope.Core/Internals/JsonSnakeCaseLowerNamingPolicy.cs
deleted file mode 100644
index 23d1f48..0000000
--- a/src/Cnblogs.DashScope.Core/Internals/JsonSnakeCaseLowerNamingPolicy.cs
+++ /dev/null
@@ -1,11 +0,0 @@
-namespace Cnblogs.DashScope.Core.Internals;
-
-internal class JsonSnakeCaseLowerNamingPolicy : JsonSeparatorNamingPolicy
-{
- public static readonly JsonSnakeCaseLowerNamingPolicy SnakeCaseLower = new();
-
- private JsonSnakeCaseLowerNamingPolicy()
- : base(true, '_')
- {
- }
-}