/// <summary> /// 使用Json反序列化响应内容为目标类型 /// </summary> /// <param name="context"></param> /// <param name="objType">目标类型</param> /// <returns></returns> public static async Task <object?> JsonDeserializeAsync(this ApiResponseContext context, Type objType) { var response = context.HttpContext.ResponseMessage; if (response == null) { return(objType.DefaultValue()); } var content = response.Content; var encoding = content.GetEncoding(); var options = context.HttpContext.HttpApiOptions.JsonDeserializeOptions; if (Encoding.UTF8.Equals(encoding) == false) { var byteArray = await content.ReadAsByteArrayAsync().ConfigureAwait(false); if (byteArray.Length == 0) { return(objType.DefaultValue()); } var utf8Json = Encoding.Convert(encoding, Encoding.UTF8, byteArray); return(JsonSerializer.Deserialize(utf8Json, objType, options)); } if (content.IsBuffered() == false) { var utf8Json = await content.ReadAsStreamAsync().ConfigureAwait(false); return(await JsonSerializer.DeserializeAsync(utf8Json, objType, options).ConfigureAwait(false)); } else { var utf8Json = await content.ReadAsByteArrayAsync().ConfigureAwait(false); return(utf8Json.Length == 0 ? objType.DefaultValue() : JsonSerializer.Deserialize(utf8Json, objType, options)); } }