From 0d6604c61a8adec9608303fc52126fbca5da3a9c Mon Sep 17 00:00:00 2001 From: Fu Diwei Date: Wed, 3 Jan 2024 16:02:04 +0800 Subject: [PATCH] =?UTF-8?q?fix(work):=20=E5=B0=9D=E8=AF=95=E8=A7=84?= =?UTF-8?q?=E9=81=BF=E9=83=A8=E5=88=86=E5=9C=BA=E6=99=AF=E4=B8=8B=E4=BC=81?= =?UTF-8?q?=E4=B8=9A=E4=BC=9A=E8=AF=9D=E5=AD=98=E6=A1=A3=20JSON=20?= =?UTF-8?q?=E5=8F=8D=E5=BA=8F=E5=88=97=E5=8C=96=E5=BC=82=E5=B8=B8=E7=9A=84?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SDK/Finance/WechatWorkFinanceClient.cs | 23 ++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/src/SKIT.FlurlHttpClient.Wechat.Work/SDK/Finance/WechatWorkFinanceClient.cs b/src/SKIT.FlurlHttpClient.Wechat.Work/SDK/Finance/WechatWorkFinanceClient.cs index 9404e551..ae66d1ef 100644 --- a/src/SKIT.FlurlHttpClient.Wechat.Work/SDK/Finance/WechatWorkFinanceClient.cs +++ b/src/SKIT.FlurlHttpClient.Wechat.Work/SDK/Finance/WechatWorkFinanceClient.cs @@ -227,7 +227,28 @@ namespace SKIT.FlurlHttpClient.Wechat.Work.SDK.Finance throw new PlatformNotSupportedException(); string dataContent = MarshalerHelper.PtrToStringUTF8(dataContentPtr); - response = JsonSerializer.Deserialize(dataContent); + try + { + response = JsonSerializer.Deserialize(dataContent); + } + catch (System.Text.Json.JsonException) + { + // NOTICE: 某些情况下微信返回的 JSON 字符串中包含设备控制符,可能导致 System.Text.Json 反序列化抛出异常 + if (JsonSerializer is FlurlSystemTextJsonSerializer) + { + string fixedDataContent = dataContent + .Replace("\\u0011", string.Empty) + .Replace("\\u0012", string.Empty) + .Replace("\\u0013", string.Empty) + .Replace("\\u0014", string.Empty); + response = JsonSerializer.Deserialize(fixedDataContent); + } + else + { + throw; + } + } + response.RawBytes = Encoding.UTF8.GetBytes(dataContent); }