网站新闻标题字数受欢迎的建网站公司

diannao/2026/1/21 23:08:49/文章来源:
网站新闻标题字数,受欢迎的建网站公司,wordpress的密码,安徽省建设安全协会网站版权声明#xff1a;本文为博主原创文章#xff0c;遵循 CC 4.0 BY-SA 版权协议#xff0c;转载请附上原文出处链接和本声明。本文链接#xff1a;https://blog.csdn.net/j_teng/article/details/100924973“KoobooJson是一款体积小巧没有任何依赖且性能表现强劲的Json工具… 版权声明本文为博主原创文章遵循 CC 4.0 BY-SA 版权协议转载请附上原文出处链接和本声明。本文链接https://blog.csdn.net/j_teng/article/details/100924973“KoobooJson是一款体积小巧没有任何依赖且性能表现强劲的Json工具” 详细介绍可以参考官方说明项目地址https://github.com/Kooboo/Jsonps楼主目前使用的版本是asp.net core 2.2在 asp.net core 2.x 中默认使用的json序列化工具是 Newtonsoft.Json ,如果你正在使用 asp.net core mvc/webapi 并且需要对 Json 序列化进行一些配置例如 首字母大小写日期格式化等那么你可能在 Startup.cs 中看到过此方法AddJsonOptions的应用public void ConfigureServices(IServiceCollection services) { services .AddMvc() .SetCompatibilityVersion(CompatibilityVersion.Version_2_2) .AddJsonOptions(opts  { //忽略循环引用 opts.SerializerSettings.ReferenceLoopHandling ReferenceLoopHandling.Ignore; //不使用驼峰样式的key opts.SerializerSettings.ContractResolver  new DefaultContractResolver(); //设置时间格式 opts.SerializerSettings.DateFormatString yyyy-MM-dd HH:mm:ss; }); }通过配置以后返回对象可以被直接序列化成你想要的 json 格式。那么使用 KoobooJson 的时候是否也可以像这样直接通过调用某个方法就进行使用和配置呢看了下官方的说明还未支持 web , 请教了作者以后自己撸了个方法吧。原理是将 Input 和 Output 的格式化方式替换成自己想要的。废话不多说上代码1.使用nuget添加Kooboo.Json2.定义输入的序列化类public class KoobooInputFormatter : IInputFormatter { protected Kooboo.Json.JsonDeserializeOption Options { get; set; }  new Kooboo.Json.JsonDeserializeOption() { JsonCharacterReadState Kooboo.Json.JsonCharacterReadStateEnum.IgnoreCase }; public KoobooInputFormatter(): this(null){ } public KoobooInputFormatter(Kooboo.Json.JsonDeserializeOption options) { Options options ?? Options; } public bool CanRead(InputFormatterContext context) { return true; } public async TaskInputFormatterResult ReadAsync(InputFormatterContext context) { if (context null) { throw new ArgumentNullException(nameof(context)); } var request context.HttpContext.Request; string json; using (var reader context.ReaderFactory(request.Body, Encoding.UTF8)) { json await reader.ReadToEndAsync(); } var result Kooboo.Json.JsonSerializer.ToObject(json, context.ModelType, Options); return await InputFormatterResult.SuccessAsync(result); } }3.定义输出的序列化类public class KoobooOutputFormatter : IOutputFormatter { protected const string CONTENT_TYPE application/json; protected virtual Kooboo.Json.JsonSerializerOption Options { get; set; } new Kooboo.Json.JsonSerializerOption() { DatetimeFormat Kooboo.Json.DatetimeFormatEnum.ISO8601, IsEnumNum true, JsonCharacterRead Kooboo.Json.JsonCharacterReadStateEnum.InitialLower, IsIgnoreValueNull false, ReferenceLoopHandling Kooboo.Json.JsonReferenceHandlingEnum.Remove }; public KoobooOutputFormatter() : this(null) { } public KoobooOutputFormatter(Kooboo.Json.JsonSerializerOption options) { Options options ?? Options; } public bool CanWriteResult(OutputFormatterCanWriteContext context) { return true; } public Task WriteAsync(OutputFormatterWriteContext context) { if (context null) { throw new ArgumentNullException(nameof(context)); } var response context.HttpContext.Response; response.ContentType CONTENT_TYPE; if (context.Object null) { response.Body.WriteByte(192); //192 好像在 Response.Body 中表示 null return Task.CompletedTask; } using (var writer new StreamWriter(response.Body, Encoding.UTF8)) { Kooboo.Json.JsonSerializer.ToJson(context.Object, writer, Options); return Task.CompletedTask; } } }4.扩展MvcOptionspublic static class KoobooMvcOptionsExtension { public static void UseKoobooFormatters(this MvcOptions opts, ActionKooboo.Json.JsonDeserializeOption, Kooboo.Json.JsonSerializerOption jsonOptionAction null) { Kooboo.Json.JsonDeserializeOption deserializeOption null; Kooboo.Json.JsonSerializerOption serializerOption null; if (jsonOptionAction ! null) { deserializeOption new Kooboo.Json.JsonDeserializeOption(); serializerOption new Kooboo.Json.JsonSerializerOption(); jsonOptionAction(deserializeOption, serializerOption); } opts.InputFormatters.Clear(); opts.InputFormatters.Add(new KoobooInputFormatter(deserializeOption)); opts.OutputFormatters.Clear(); opts.OutputFormatters.Add(new KoobooOutputFormatter(serializerOption)); } }5.最终使用public void ConfigureServices(IServiceCollection services) { services.AddMvc() .SetCompatibilityVersion(CompatibilityVersion.Version_2_2) .AddMvcOptions(opts { opts.UseKoobooFormatters((deserializeOption, serializerOption) { //你可以在这里对反序列化/序列化进行配置 deserializeOption null;//反序列化对象设置为null则使用默认的设置 serializerOption.IsEnumNum false;//枚举不转换为数字 serializerOption.IsIgnoreValueNull true;//忽略值为null的字段 serializerOption.JsonCharacterRead Kooboo.Json.JsonCharacterReadStateEnum.InitialLower;//首字母小写 }); }); }如果你只需要使用默认的配置。你可以直接这样 opts.UseKoobooFormatters();至此已经可以在项目中使用了效果如下demo 下载,百度网盘下载地址:https://pan.baidu.com/s/1O-OBn2hYcQFhDXQRc7-Wvg提取码:a4pw -----------------------------分割线-------------------------------以下是一些常用的特性忽略字段仅包含某字段字段排序等 /// summary /// IgnoreDefaultValue忽略此类中所有字段为默认值的元素 /// /summary [Kooboo.Json.IgnoreDefaultValue] public class StudentModel { /// summary /// Alias字段别名 /// JsonOrder字段排序 /// /summary [Kooboo.Json.Alias(Name)] [Kooboo.Json.JsonOrder(3)] public string FullName { get; set; } /// summary /// IgnoreKey忽略某字段 /// /summary [Kooboo.Json.IgnoreKey] public string Address { get; set; } [Kooboo.Json.JsonOrder(2)] public byte Age { get; set; } [Kooboo.Json.JsonOrder(4)] public DateTime Dirthday { get; set; } [Kooboo.Json.JsonOrder(1)] public EnumGender Gender { get; set; } [Kooboo.Json.JsonOrder(5)] public string Mobile { get; set; } /// summary /// Base64ValueFormat这个是自定义的值格式化特性 /// /summary [Base64ValueFormat] public byte[] Avatar { get; set; } }如果你需要对值的格式化进行个性设置例如你不管我就需要这种时间格式ffff.yyyy-MM-dd:HH-mm-ss 或者 上一段代码中类型为 byte[] 的 Avatar  属性可以使用值格式化特性 来实现。 /// summary /// 可以自定义一个值格式化特性 /// /summary public class Base64ValueFormatAttribute : Kooboo.Json.ValueFormatAttribute { public override string WriteValueFormat(object value, Type type, Kooboo.Json.JsonSerializerHandler handler, out bool isValueFormat) { isValueFormat true; if (value null) return string.Empty; else return Convert.ToBase64String((byte[])value); } public override object ReadValueFormat(string value, Type type, Kooboo.Json.JsonDeserializeHandler handler, out bool isValueFormat) { isValueFormat true; if (string.IsNullOrWhiteSpace(value) || value null) return null; else return Convert.FromBase64String(value); } }如果你想将这个自定义的格式化方式运用于全局你可以在第5步的 UseKoobooFormatters 中通过设置 serializerOption.GlobalValueFormat 和 deserializeOption.GlobalValueFormat 来实现public void ConfigureServices(IServiceCollection services) { services.AddMvc() .SetCompatibilityVersion(CompatibilityVersion.Version_2_2) .AddMvcOptions(opts { opts.UseKoobooFormatters((deserializeOption, serializerOption) { //你可以在这里对反序列化/序列化进行配置 serializerOption.IsEnumNum true;//枚举转换为数字 serializerOption.IsIgnoreValueNull true;//忽略值为null的字段 serializerOption.JsonCharacterRead Kooboo.Json.JsonCharacterReadStateEnum.InitialLower;//首字母小写 serializerOption.GlobalValueFormat KoobooGlobalValueFormat.Base64Serializer;//设置全局的对于byte[]类型的自定义序列化方式 deserializeOption.GlobalValueFormat KoobooGlobalValueFormat.Base64Deserializer;//设置全局的对于byte[]类型的自定义反序列化方式 }); }); } public static class KoobooGlobalValueFormat { public static string Base64Serializer(object value, Type type, Kooboo.Json.JsonSerializerHandler jsonSerializeHandler, out bool isValueFormat) { if (type typeof(byte[])) { isValueFormat true; if (value null) return string.Empty; else return Convert.ToBase64String((byte[])value); } else { isValueFormat false; return null; } } public static object Base64Deserializer(string value, Type type, Kooboo.Json.JsonDeserializeHandler jsonDeserializeHandler, out bool isValueFormat) { if (type typeof(byte[])) { isValueFormat true; if (string.IsNullOrWhiteSpace(value) || value null) return null; else return Convert.FromBase64String(value); } else { isValueFormat false; return null; } } }值得注意的是,对于byte[]类型的base64解析行为, KoobooJson已经内嵌在配置项中, 只要设置serializerOption.IsByteArrayFormatBase64 true 即可public void ConfigureServices(IServiceCollection services) { services.AddMvc() .SetCompatibilityVersion(CompatibilityVersion.Version_2_2) .AddMvcOptions(opts { opts.UseKoobooFormatters((deserializeOption, serializerOption) { //你可以在这里对反序列化/序列化进行配置 serializerOption.IsEnumNum true;//枚举转换为数字 serializerOption.IsIgnoreValueNull true;//忽略值为null的字段 serializerOption.JsonCharacterRead Kooboo.Json.JsonCharacterReadStateEnum.InitialLower;//首字母小写 serializerOption.IsByteArrayFormatBase64 true;//使用KoobooJson自带的对于byte[]类型的base64处理 //serializerOption.GlobalValueFormat KoobooGlobalValueFormat.Base64Serializer;//设置全局的对于byte[]类型的自定义序列化方式 //deserializeOption.GlobalValueFormat KoobooGlobalValueFormat.Base64Deserializer;//设置全局的对于byte[]类型的自定义反序列化方式 }); }); }参考资料1.Asp.Net Core中Json序列化处理整理2.将 .NET Core 2.0 的默认 JSON 解析器替换为 Jil————————————————版权声明本文为CSDN博主「j_teng」的原创文章遵循 CC 4.0 BY-SA 版权协议转载请附上原文出处链接及本声明。原文链接https://blog.csdn.net/j_teng/article/details/100924973  https://github.com/dotnetcore

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/89484.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

张家口桥西区建设局网站市场营销策略范文

指针用的好犹如神助,用不好会让你叫苦连连,但大多数人是用不好指针的,所以后来的很多语言都把指针封装,屏蔽。比如JAVA,java是没有指针的,但是很多地方都用到指针,不过不对用户开放,…

企业网站更新频率易语言做网站图片下载

最近在研究如何为Hadoop开启基于Kerberos的安全配置,经过千辛万苦配置好后本以为到了见证奇迹的时刻,但是卡在NodeManger无法启动,折磨的死去活来。经历了各种百度、google后依然无果,最终还是乖乖的回来细读Hadoop官方配置文档&a…

网站没排名要怎么做怎么用织梦系统建一个网站

机缘 作为一个前端开发者,我一直热衷于将设计和技术相结合,尽可能提升用户体验。我最初成为创作者的初心源于学习记录,把创作当作一个笔记,希望把自己遇到的问题,以及学习到的实用技巧记录下来,方便学习回…

wap网站管理系统企业品牌推广的核心目的是

目录 一、SD NAND特征1.1 SD卡简介1.2 SD卡Block图 二、SD卡样片三、Zynq测试平台搭建3.1 测试流程3.2 SOC搭建 一、SD NAND特征 1.1 SD卡简介 雷龙的SD NAND有很多型号,在测试中使用的是CSNP4GCR01-AMW与CSNP32GCR01-AOW。芯片是基于NAND FLASH和 SD控制器实现的…

网站建设前期准备产品软文案例

BFC 介绍下BFC (块级格式化上下文) 1>什么是BFC BFC即块级格式化上下文,是CSS可视化渲染的一部分, 它是一块独立的渲染区域,只有属于同一个BFC的元素才会互相影响,且不会影响其它外部元素。 2>如何创建BFC 根元素,即HTM…

深圳网站建站推广中企动力做销售怎么样

在人工智能的宏伟蓝图中,人工通用智能(AGI)代表着一个集大成者,一个能够理解、学习、适应并执行任何智能任务的系统。随着我们对AGI的探索愈发深入,尤其是在视觉、语言和其他模态的融合上,关于AGI的讨论愈发…

免费行情软件app网站大全流量卡网站

test判断字符串是否符合正则的要求注意注意:字符串有一部分符合要求,test就会判断为真。这个时候我们可以加一个行首(^)行尾($)来控制分析我们根据常用邮箱写一个中文的校验规则如下:我们常用的邮箱格式:yancamy126.comyan233__qq…

永久免费企业建站官网大全公司名字logo免费设计

首先gcc编译链接的一个实例如下所示: 接下来看一下gcc的常见选项: gcc的使用示例: 转载于:https://www.cnblogs.com/wsw-seu/p/10826124.html

想做淘宝 网站怎么做商丘网站网站建设

集成电路通常对制造工艺、生产设备、品质检验等方面有较高的要求,而随着智能技术和自动化技术的发展成熟,如今集成电路行业逐渐迈入数字化和智能化阶段,而至这个时代背景当中,很多集成电路工厂借助ERP实现信息化转型升级。 时至今…

深圳网站开发外包公司深圳游戏公司

本文由尚妆前端开发工程师欲休撰写 本文发表于尚妆博客,欢迎订阅! 移动端开发在某些场景中有着特殊需求,如为了提高用户体验和加快响应速度,常常在部分工程采用SPA架构。传统的单页应用基于url的hash值进行路由,这种实…

太原网站建设电话网络营销软件网站

交换机的用途是非常广泛的,可以这样说,只要是需要联网的地方,基本上都会和交换机相关。我们一般把交换机的使用大致为商用和工业级,商用基本上在公司、单位的办公使用比较常见,今天飞畅科技着重为大家介绍一下工业级交…

自己做电影网站怎么赚钱seo工作室

torch.nn.Sequential torch.nn.Sequential是一个容器,利用此容器可以快速简单的搭建一个简单的神经网络。这里以搭建一个三层神经网络为例。 首先该容器的参数分别是上一层到下一层的权重、激活函数,以此循环。 这里torch提供快速生成网络权重的方法&am…

给别人做网站用做假酒验证北京seo关键词排名

目录 Collection集合 迭代器遍历 增强for遍历 Lambda表达式遍历 List集合 遍历 数据结构 栈 队列 数组 链表 前言: 学习JAVA的第十三天 Collection集合 Collection的遍历方式: 迭代器(不依赖索引)遍…

榆林做网站多少钱怎做卖东西的网站

目录 参数复制文件然后进行同时复制操作 给定内容生成文件,并制定权限验证 关于覆盖先查看当前内容覆盖并备份查看文件权限 还有有没有备份查看文件内容 参数 这个模块用于将文件复制到远程主机,同时支持给定内容生成文件和修改权限等。   其相关选项…

深圳燃气公司官网北京seo地址

##用nodejs 写爬虫 关键模块:cheerio、http,request。 consonl.log() 出来的数据 首先安装相关的模块: //我用了某宝的镜像安装 原来是 npm,-g 可以根据自己情况是全局按装还是局域安装 cnpm install -g jquerycnpm install -g cheerioc…

大型网站 中小型网站失效网站建设费支出

写在前面 如果你的身边有一个随时待命、聪明绝顶的AI小助手,能够听懂你的话,理解你的需求,用温暖的声音回应你,会是一种什么体验? 今天,带大家一起搭建一个语音对话机器人,拥有一个专属的个人…

成都专业制作网站公司免费h5在线制作

问:gcc中的-I.是什么意思。。。。看到了有的是gcc -I. -I/usr/xxxxx..那个-I.是什么意思呢 最佳答案 答:-Ixxx 的意思是除了默认的头文件搜索路径(比如/usr/include等)外,同时还在路径xxx下搜索需要被引用的头文件。 所以你的gcc …

深圳微商城网站设计宣传片制作标准参数

rk3588s: 旋转编码器input输入事件适配 基于Android 12 kernel-5.10版本 参考文档: https://blog.csdn.net/szembed/article/details/131551950 Linux 输入设备调试详解(零基础开发)Rotary_Encoder旋转编码器驱动 通用GPIO为例 挂载input输…

正能量网站入口免费安全产品展示的手机网站

使用Turbo C和Turbo Pascal开始学习编程貌似也是一代人的集体记忆。这方面我也没什么忌讳,毕竟Borland Turbo C在九十年代末的PC上面还是一个运行效率不错的开发工具。然而启蒙老师的水平限制,那个时候所学习的编写和调试技术都不过关,一个超…

中国最好的域名注册网站微信小程序第三方开发

Hibernate中的标识符为实体的主键属性建模。 它有助于我们唯一地标识JPA实体。 每个实体都必须定义一个标识符。 同样,它可以是简单的也可以是复合的。 我们可以通过几种方式定义一个Hibernate标识符。 在本教程中,我们将学习如何做。 简单&#xff08…