diff --git a/src/Senparc.CO2NET/Helpers/Serializers/SerializerHelper.cs b/src/Senparc.CO2NET/Helpers/Serializers/SerializerHelper.cs index fa69bca6..46af2d3c 100644 --- a/src/Senparc.CO2NET/Helpers/Serializers/SerializerHelper.cs +++ b/src/Senparc.CO2NET/Helpers/Serializers/SerializerHelper.cs @@ -36,6 +36,9 @@ and limitations under the License. 修改标识:Senparc - 20180526 修改描述:v0.2.9 添加 SerializerHelper.GetObject(this string jsonString, Type type) 方法 + 修改标识:Senparc - 20220331 + 修改描述:v2.0.5.4 添加 GetObject() 方法的 settings 参数 + ----------------------------------------------------------------*/ @@ -87,10 +90,11 @@ public static string GetJsonString(object data, JsonSetting jsonSetting = null) /// /// 反序列化对象类型 /// JSON字符串 + /// JsonSerializerSettings /// - public static T GetObject(this string jsonString) + public static T GetObject(this string jsonString, Newtonsoft.Json.JsonSerializerSettings settings = null) { - return (T)Newtonsoft.Json.JsonConvert.DeserializeObject(jsonString, typeof(T)); + return (T)Newtonsoft.Json.JsonConvert.DeserializeObject(jsonString, typeof(T), settings); //#if NET451 // JavaScriptSerializer jsSerializer = new JavaScriptSerializer(); // return jsSerializer.Deserialize(jsonString); @@ -104,10 +108,11 @@ public static T GetObject(this string jsonString) /// /// JSON字符串 /// 反序列化类型 + /// JsonSerializerSettings /// - public static object GetObject(this string jsonString, Type type) + public static object GetObject(this string jsonString, Type type, Newtonsoft.Json.JsonSerializerSettings settings = null) { - return Newtonsoft.Json.JsonConvert.DeserializeObject(jsonString, type); + return Newtonsoft.Json.JsonConvert.DeserializeObject(jsonString, type, settings); } // #region 序列化对象 - byte[] diff --git a/src/Senparc.CO2NET/Senparc.CO2NET.csproj b/src/Senparc.CO2NET/Senparc.CO2NET.csproj index 95336b61..0e074462 100644 --- a/src/Senparc.CO2NET/Senparc.CO2NET.csproj +++ b/src/Senparc.CO2NET/Senparc.CO2NET.csproj @@ -1,192 +1,193 @@ - - net451;netstandard2.0;netstandard2.1 - 2.0.5.3 - 8.0 - Senparc.CO2NET - Senparc.CO2NET - true - + + net451;netstandard2.0;netstandard2.1 + 2.0.5.4 + 8.0 + Senparc.CO2NET + Senparc.CO2NET + true + Senparc.CO2NET 公共基础库 Senparc.CO2NET 开源项目: https://github.com/Senparc/Senparc.CO2NET - Senparc Copyright © 2004~2022 - .NET Core,.NET Framework,公共,基础库,CO2NET - Senparc - Senparc - Apache-2.0 - https://github.com/Senparc/Senparc.CO2NET - Senparc.CO2NET.dll - Senparc.CO2NET 公共基础库 - https://github.com/Senparc/Senparc.CO2NET - icon.jpg - - v0.1.0 构建基础代码,从 Senparc.Weixin 分离公共代码 - v0.1.1 优化代码,单元测试接近100%覆盖 - v0.1.2 添加 IDomainExtensionCacheStrategy.RegisterCacheStrategyDomain() 方法 - v0.1.3 添加 EntityUtility.FillSystemType()方法对 Int32[] 和 Int64[] 的处理 - v0.1.4 添加 SenparcSetting 全局配置属性 - v0.1.5 RegisterServiceExtension.AddSenparcGlobalServices() 方法可自动获取 SenparcSetting 全局设置 - v0.1.6 解决 XXE 漏洞,继承自 XmlDocument 对象,自动将 XmlResolver 设为 null - v0.1.6.1 添加 Register.UseSenparcGlobal() 方 - v0.1.7 扩展 ReflectionHelper.GetStaticMember() 方法 - v0.1.8 .net core 下的 RegisterService.Start() 方法中,env 可以传入 null,以便在控制台等环境中完成注册 - v0.1.9 - 1、RegisterService 取消 public 的构造函数,统一使用 RegisterService.Start() 初始化 - 2、重构 Register.UseSenparcGlobal() 方法,承担扩展缓存扫描功能 - 3、添加 UnregisteredDomainCacheStrategyException 异常类型 - 4、 .net framework 和 .net core 版本统一强制在构造函数中要求提供 SenparcSetting 参数 - v0.1.10 调整 SenparcSetting 参数,将分布式缓存连接信息归入到 SenparcSetting 中 - v0.1.11 提供 SenparcSetting.BuildFromWebConfig() 方法 + Senparc Copyright © 2004~2022 + .NET Core,.NET Framework,公共,基础库,CO2NET + Senparc + Senparc + Apache-2.0 + https://github.com/Senparc/Senparc.CO2NET + Senparc.CO2NET.dll + Senparc.CO2NET 公共基础库 + https://github.com/Senparc/Senparc.CO2NET + icon.jpg + + v0.1.0 构建基础代码,从 Senparc.Weixin 分离公共代码 + v0.1.1 优化代码,单元测试接近100%覆盖 + v0.1.2 添加 IDomainExtensionCacheStrategy.RegisterCacheStrategyDomain() 方法 + v0.1.3 添加 EntityUtility.FillSystemType()方法对 Int32[] 和 Int64[] 的处理 + v0.1.4 添加 SenparcSetting 全局配置属性 + v0.1.5 RegisterServiceExtension.AddSenparcGlobalServices() 方法可自动获取 SenparcSetting 全局设置 + v0.1.6 解决 XXE 漏洞,继承自 XmlDocument 对象,自动将 XmlResolver 设为 null + v0.1.6.1 添加 Register.UseSenparcGlobal() 方 + v0.1.7 扩展 ReflectionHelper.GetStaticMember() 方法 + v0.1.8 .net core 下的 RegisterService.Start() 方法中,env 可以传入 null,以便在控制台等环境中完成注册 + v0.1.9 + 1、RegisterService 取消 public 的构造函数,统一使用 RegisterService.Start() 初始化 + 2、重构 Register.UseSenparcGlobal() 方法,承担扩展缓存扫描功能 + 3、添加 UnregisteredDomainCacheStrategyException 异常类型 + 4、 .net framework 和 .net core 版本统一强制在构造函数中要求提供 SenparcSetting 参数 + v0.1.10 调整 SenparcSetting 参数,将分布式缓存连接信息归入到 SenparcSetting 中 + v0.1.11 提供 SenparcSetting.BuildFromWebConfig() 方法 - v0.2.0 缓存策略提供超时设置接口 - v0.2.1 “当前扩展缓存策略没有进行注册”异常信息提供更加详细的缓存类型信息 - v0.2.2 RequestExtension 添加对 NETSTANDARD2_0 的支持 - v0.2.3 优化 RequestExtension.AbsoluteUri() 方法的输出结果 - v0.2.4 - 1、添加 CacheException 缓存异常类型 - 2、添加对 IMemoryCache 的未设置提示 - 3、优化 UnregisteredDomainCacheStrategyException,使用 CacheException 作为基类 - v0.2.5 优化 SenparcID,其中所有方法支持 .net standard 2.0 - v0.2.6 增加 DateTimeHelper.GetUnixDateTime() 方法,标记过期 GetWeixinDateTime() 方法 - v0.2.7 添加 ServerUtility - v0.2.8 添加 SenparcDI.GetIServiceProvider() 方法,以支持其他依赖注入框架 - v0.2.9 - 1、优化 Config.RootDictionaryPath 方法,可自动获取默认值 - 2、添加 SerializerHelper.GetObject(this string jsonString, Type type) 方法 - v0.2.10 ObjectExtensions.ToJson() 方法提供 indented 方法,支持缩进格式 - v0.2.11 修复 .NET Core 下模拟表单 Post 参数无效的问题 - v0.2.14 ToJson() 方法优化 - v0.2.15 Post 方法添加 headerAddition参数 - v0.2.17 启用 SystemTime.Now,方便单元测试或紧急情况下改动系统当前时间 - v0.2.18 支持 Senparc.CO2NET.APM - v0.3.0 升级 SenparcTrace,使用队列 - v0.3.1 更新 RequestUtility.GetQueryString() 方法 - v0.4.0 使用 .NETStandard2.0 统一支持 .NET Core,放弃对 .NET Core 1.x 的单独适配 - v0.4.1 为 UrlEncode() 和 UrlDecode() 方法添加在 .net framework 环境下的编码类型选择 - v0.4.2 优化 ServerUtility 类中方法在 docker 或 linux 环境下的路径识别 - v0.4.3 使用 DateTimeOffset 取代 DateTime - v0.4.4 提供 SenparcTrace.RecordAPMLog 参数RequestUtility.Post.cs - v0.5.0 提供对 .NET Core Console 的全面支持 - v0.5.1 ToJson() 方法添加 jsonSerializerSettings 参数 - v0.5.1.1 添加 Sex.未设置 枚举值 - v0.5.2 添加 SenparcDI.GetRequiredService() 方法,提供线程内独立 ServiceProvider 实例 - v0.6.0 提供缓存异步接口 - v0.6.1 完善 SystemTime,添加 NowTicks 属性 - v0.7.0 优化 HttpClient,重构 RequestUtility(包括 Post 和 Get),引入 HttpClientFactory 机制 - v0.7.1 - 1、添加 NowDiff 属性 - 2、添加 DayOfWeekString、DILifecycleType 配置和枚举 - v0.7.1 - 1、添加 NowDiff 属性 - 2、添加 DayOfWeekString、DILifecycleType 配置和枚举 - 3、修复:.NET 4.5 下 Post 方法未指定 content-type - v0.7.2.1 解决 GetHttpClientHandler() 方法中 cookieContainer 为 null 可能发生的异常 - v0.7.3 - 1、添加 HttpClientFactory 多证书方案 - 2、使用 .ConfigureAwait(false) 避免异步锁死的情况 - v0.8 - 1、停止提供对 .NET 3.5/4.0 的支持 - 2、使用异步方法提升并发效率 - v0.8.3 添加 Stream 参数的 GetMD5() 方法 - v0.8.4 HttpUtility.HttpPost_Common_NetCore 所调用的额 CreateFileContent 取消对 fileName 参数的 UrlEncode 编码 - v0.8.5 解决 .NET Framework 4.5 下文件上传的 ContentType 设置问题 - v0.8.6 添加 FileHelper.FileInUse() 方法,用于判断文件是否正在被占用 - v0.8.7 RequestUtility.Post() 方法添加新功能:使用文件流模拟 Form 表单提交 - v0.8.8 改进 SenparcTrace 日志记录效率,提供异步方法处理 - v0.8.9 提供 AutoUnlockLogFile 参数,并针对日志文件可能被占用的情况尝试自动解锁。 - v0.8.10 提供 Config.HostingEnvironment 属性 - v0.9.0 添加 SystemTime.UtcDateTime 属性 - v0.9.1 提供带符号的 nuget 包(.snuget) - v1.0.100 支持 .NET Core 3.0 - v1.0.101 RequestUtility.GetRequestMemoryStream() 增加对 .NET Core 3.0 AllowSynchronousIO 的设置 - v1.0.102 - 1、提供新的 app.UseSenparcGlobal() 注册方法 - 2、添加更多 SystemTime 辅助方法 - v1.0.103 优化异步方法 - v1.3.201 更新 Senparc.CO2NET.HttpUtility.Get.Download() 方法,修正 filename 判断正则表达式 - v1.4.400 修复 Download 方法 bug + v0.2.0 缓存策略提供超时设置接口 + v0.2.1 “当前扩展缓存策略没有进行注册”异常信息提供更加详细的缓存类型信息 + v0.2.2 RequestExtension 添加对 NETSTANDARD2_0 的支持 + v0.2.3 优化 RequestExtension.AbsoluteUri() 方法的输出结果 + v0.2.4 + 1、添加 CacheException 缓存异常类型 + 2、添加对 IMemoryCache 的未设置提示 + 3、优化 UnregisteredDomainCacheStrategyException,使用 CacheException 作为基类 + v0.2.5 优化 SenparcID,其中所有方法支持 .net standard 2.0 + v0.2.6 增加 DateTimeHelper.GetUnixDateTime() 方法,标记过期 GetWeixinDateTime() 方法 + v0.2.7 添加 ServerUtility + v0.2.8 添加 SenparcDI.GetIServiceProvider() 方法,以支持其他依赖注入框架 + v0.2.9 + 1、优化 Config.RootDictionaryPath 方法,可自动获取默认值 + 2、添加 SerializerHelper.GetObject(this string jsonString, Type type) 方法 + v0.2.10 ObjectExtensions.ToJson() 方法提供 indented 方法,支持缩进格式 + v0.2.11 修复 .NET Core 下模拟表单 Post 参数无效的问题 + v0.2.14 ToJson() 方法优化 + v0.2.15 Post 方法添加 headerAddition参数 + v0.2.17 启用 SystemTime.Now,方便单元测试或紧急情况下改动系统当前时间 + v0.2.18 支持 Senparc.CO2NET.APM + v0.3.0 升级 SenparcTrace,使用队列 + v0.3.1 更新 RequestUtility.GetQueryString() 方法 + v0.4.0 使用 .NETStandard2.0 统一支持 .NET Core,放弃对 .NET Core 1.x 的单独适配 + v0.4.1 为 UrlEncode() 和 UrlDecode() 方法添加在 .net framework 环境下的编码类型选择 + v0.4.2 优化 ServerUtility 类中方法在 docker 或 linux 环境下的路径识别 + v0.4.3 使用 DateTimeOffset 取代 DateTime + v0.4.4 提供 SenparcTrace.RecordAPMLog 参数RequestUtility.Post.cs + v0.5.0 提供对 .NET Core Console 的全面支持 + v0.5.1 ToJson() 方法添加 jsonSerializerSettings 参数 + v0.5.1.1 添加 Sex.未设置 枚举值 + v0.5.2 添加 SenparcDI.GetRequiredService() 方法,提供线程内独立 ServiceProvider 实例 + v0.6.0 提供缓存异步接口 + v0.6.1 完善 SystemTime,添加 NowTicks 属性 + v0.7.0 优化 HttpClient,重构 RequestUtility(包括 Post 和 Get),引入 HttpClientFactory 机制 + v0.7.1 + 1、添加 NowDiff 属性 + 2、添加 DayOfWeekString、DILifecycleType 配置和枚举 + v0.7.1 + 1、添加 NowDiff 属性 + 2、添加 DayOfWeekString、DILifecycleType 配置和枚举 + 3、修复:.NET 4.5 下 Post 方法未指定 content-type + v0.7.2.1 解决 GetHttpClientHandler() 方法中 cookieContainer 为 null 可能发生的异常 + v0.7.3 + 1、添加 HttpClientFactory 多证书方案 + 2、使用 .ConfigureAwait(false) 避免异步锁死的情况 + v0.8 + 1、停止提供对 .NET 3.5/4.0 的支持 + 2、使用异步方法提升并发效率 + v0.8.3 添加 Stream 参数的 GetMD5() 方法 + v0.8.4 HttpUtility.HttpPost_Common_NetCore 所调用的额 CreateFileContent 取消对 fileName 参数的 UrlEncode 编码 + v0.8.5 解决 .NET Framework 4.5 下文件上传的 ContentType 设置问题 + v0.8.6 添加 FileHelper.FileInUse() 方法,用于判断文件是否正在被占用 + v0.8.7 RequestUtility.Post() 方法添加新功能:使用文件流模拟 Form 表单提交 + v0.8.8 改进 SenparcTrace 日志记录效率,提供异步方法处理 + v0.8.9 提供 AutoUnlockLogFile 参数,并针对日志文件可能被占用的情况尝试自动解锁。 + v0.8.10 提供 Config.HostingEnvironment 属性 + v0.9.0 添加 SystemTime.UtcDateTime 属性 + v0.9.1 提供带符号的 nuget 包(.snuget) + v1.0.100 支持 .NET Core 3.0 + v1.0.101 RequestUtility.GetRequestMemoryStream() 增加对 .NET Core 3.0 AllowSynchronousIO 的设置 + v1.0.102 + 1、提供新的 app.UseSenparcGlobal() 注册方法 + 2、添加更多 SystemTime 辅助方法 + v1.0.103 优化异步方法 + v1.3.201 更新 Senparc.CO2NET.HttpUtility.Get.Download() 方法,修正 filename 判断正则表达式 + v1.4.400 修复 Download 方法 bug - v1.5.2 - 1、增加和丰富 EncryptHelper 中加密方法(SHA1、AesGcmDecrypt、CRC32) - 2、添加 FileHelper 中 GetFileHash 方法 - 3、LocalCacheLock释放锁之前增加是否锁成功的判断 + v1.5.2 + 1、增加和丰富 EncryptHelper 中加密方法(SHA1、AesGcmDecrypt、CRC32) + 2、添加 FileHelper 中 GetFileHash 方法 + 3、LocalCacheLock释放锁之前增加是否锁成功的判断 - v2.0.2 添加 XmlUtility.Deserialize() 重写方法 - v2.0.3 修改HttpClient请求超时的实现方式 - v2.0.4 XmlUtility 反序列化(Deserialize) 全面添加 rootNodeName 参数 - v2.0.5 添加 WaitingFor() 方法 - - https://github.com/Senparc/Senparc.CO2NET - Debug;Release;Test - - - ..\BuildOutPut - TRACE;RELEASE - - - ..\BuildOutPut - $(DefineConstants);RELEASE - ..\BuildOutPut\Senparc.CO2NET.xml - true - pdbonly - prompt - MinimumRecommendedRules.ruleset - - - ..\BuildOutPut\ - ..\BuildOutPut\net451\Senparc.CO2NET.xml - - - - ..\BuildOutPut\ - ..\BuildOutPut\netstandard2.0\Senparc.CO2NET.xml - - - ..\BuildOutPut\ - ..\BuildOutPut\netstandard2.1\Senparc.CO2NET.xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + ..\BuildOutPut\ + ..\BuildOutPut\netstandard2.0\Senparc.CO2NET.xml + + + ..\BuildOutPut\ + ..\BuildOutPut\netstandard2.1\Senparc.CO2NET.xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file