c#:System.Text.Json 的使用四(如何忽略[JsonPropertyName])
环境:
- .net 6.0
- vs2022
系列篇:
《c#:System.Text.Json 的使用一》
《c#:System.Text.Json 的使用二》
《c#:System.Text.Json 的使用三(从Newtonsoft迁移)》
《c#:System.Text.Json 的使用四(如何忽略[JsonPropertyName])》
参考:
《C# 序列化Json时如何忽略JsonProperty(PropertyName =“ someName”)》
《自定义 JSON 协定》
1. System.Text.Json
using System.Text.Json.Serialization.Metadata;
using System.Text.Json.Serialization;
using System.Text.Json;
using System.Reflection;//默认输出: {"kname":"jack"}
//var jsonDefault = JsonSerializer.Serialize(new Person { Name = "jack" });//使用 Modifiers 达到期望, 输出: {"Name":"jack"}
var json = JsonSerializer.Serialize(new Person { Name = "jack" }, new JsonSerializerOptions
{TypeInfoResolver = new DefaultJsonTypeInfoResolver{Modifiers = { (typeInfo) =>{for (int i = 0; i < typeInfo.Properties.Count; i++){var property = typeInfo.Properties[i];var prop = property.AttributeProvider as PropertyInfo;if (prop != null) property.Name = prop.Name;}}}}
});public class Person
{[JsonPropertyName("kname")]public string Name { get; set; }
}
2. NewtonSoft
using Newtonsoft.Json;
using Newtonsoft.Json.Serialization;//默认输出: {"kname":"jack"}
//var jsonDefault = JsonConvert.SerializeObject(new Person { Name = "jack" });//使用 ContractResolver 达到期望, 输出: {"Name":"jack"}
var settings = new JsonSerializerSettings();
settings.ContractResolver = new LongNameContractResolver();
var json = JsonConvert.SerializeObject(new Person { Name = "jack" }, settings);public class Person
{[JsonProperty("kname")]public string Name { get; set; }
}public class LongNameContractResolver : DefaultContractResolver
{protected override IList<JsonProperty> CreateProperties(Type type, MemberSerialization memberSerialization){IList<JsonProperty> list = base.CreateProperties(type, memberSerialization);foreach (JsonProperty prop in list){prop.PropertyName = prop.UnderlyingName;}return list;}
}
相关文章:

c#:System.Text.Json 的使用四(如何忽略[JsonPropertyName])
环境: .net 6.0vs2022 系列篇: 《c#:System.Text.Json 的使用一》 《c#:System.Text.Json 的使用二》 《c#:System.Text.Json 的使用三(从Newtonsoft迁移)》 《c#:System.Text.Json…...

【CPU】CPU的物理核、逻辑核、超线程判断及L1、L2、L3缓存、CacheLine和CPU的TBL说明
CPU物理核及L1、L2、L3及缓存 CPU缓存 CPU 缓存是一种用于存储临时数据以提高计算机程序性能的内存层次结构。它通常分为三个层次:L1(一级)、L2(二级)和L3(三级)缓存。缓存大小是CPU的重…...

NET WPF使用组件库HandyControl
一、背景 WPF原生控件提供的API功能不够强大,设置一般的功能都需要进行很复杂的配置和实现。 1.1 原生按钮控件 例如,原生控件<Button/> 默认效果是这样的: MainWindow.xaml代码: <Window x:Class"wpf_demo.Mai…...

计算机毕业设计之:教学平台微信小程序(
博主介绍: ✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ等平台…...

VMware Fusion虚拟机Mac版 安装Win10系统教程
Mac分享吧 文章目录 Win10安装完成,软件打开效果一、VMware安装Windows10虚拟机1️⃣:准备镜像2️⃣:创建虚拟机3️⃣:虚拟机设置4️⃣:安装虚拟机(步骤和Win11安装步骤类似,此处相同步骤处没换…...

头戴式蓝牙耳机性价比高的有哪些?四款高能性价比机型对比推荐
在当今科技日新月异的时代,头戴式蓝牙耳机已经成为了我们日常生活中不可或缺的一部分,无论是通勤路上、健身房内还是家中休闲时,一副优质的头戴式蓝牙耳机都能为我们带来沉浸式的听觉体验,那么头戴式蓝牙耳机性价比高的有哪些&…...

Linux:make,Makefile
hello,各位小伙伴,本篇文章跟大家一起学习《Linux:make,Makefile》,感谢大家对我上一篇的支持,如有什么问题,还请多多指教 ! 如果本篇文章对你有帮助,还请各位点点赞&…...

基于代理的分布式身份管理方案
目的是使用分布式的联合计算分发去替换掉区块链中原有的类第三方可信中心的证书机制,更加去中心化。 GS-TBK Group Signatures with Time-bound Keys. CS-TBK 算法 Complete subtree With Time-bound Keys,该算法是用来辅助检测用户的签名是否有效&…...

VSCode开发ros程序无法智能提示的解决方法(一)
VSCode开发ros程序无法智能提示的解决方法(一) 问题解决 问题 在Ubuntu下使用vscode开发ros程序,无法进行智能提示。 解决 将 intelli Sense Engine 设置为 Tag Parser 即可。...

grep命令如何实现正则表达式搜索?
grep 命令支持使用正则表达式(Regular Expression,简称 regex)进行搜索 以下是一些使用正则表达式的基本示例: 搜索包含 “example” 的行: grep "example" file.txt搜索以 “abc” 开头的行: g…...

Vue报错 ‘vite‘ 不是内部或外部命令,也不是可运行的程序或批处理文件
报错 vue-project0.0.0 dev vite‘vite’ 不是内部或外部命令,也不是可运行的程序 或批处理文件。解决 第1步. 控制台输入 npm install -g create-vite第2步. 控制台输入 npm install -g vite第3步. 运行就ok啦...

emqx代理订阅主题的方法
需求:需要代理订阅主题 mqtt/MaxVision/# 5.0以上的版本 界面操作添加就可以5.0以下版本 修改emqx.config 文件 首先在EMQX Dashboard(web端)中模块 emqx_mod_subscription 要启用修改配置 #1.切换目录 cd /home/emqx/etc#2.编辑配置文件 emqx.config vim emqx.config#3.修…...

页面关键路径渲染详解
关键路径渲染 浏览器不会等待全部资源都下载完后才进行渲染,而是采用渐进式的渲染方式,本文就介绍一下这种渐进式的渲染方式。 当浏览器获取到用于呈现网页的资源后,通常就会开始渲染网页。那么究竟是在什么时候就会开始渲染? …...

错题集锦之C语言
直接寻址和立即寻址 算法的又穷性是指算法程序的运行时间是有限的 未经赋值的全局变量值不确定 集成测试是为了发现概要设计的错误 自然连接要求两个关系中进行比较的是相同的属性,并且进行等值连接,在结果中还要把重复的属性列去掉 赋值运算符 赋值…...

【2024华为杯数学建模竞赛】E题 解题思路 | 视频特征提取
这高速公路应急车道紧急启用模型 问题 1解题思路解题思路 问题 2解题思路 问题 3解题思路 问题 1 某路段(长度约5000m,行车道2应急车道1)上有四个视频观测点(见示意图1)。请基于该路段四个视频数据解决如下问题&#x…...

ubuntu 执行定时任务crontab -e 无法输入的问题
界面显示 GNU nano 4.8 /tmp/crontab.l0A1HJ/crontab # Edit this file to introduce tasks to be run by cron. # # Each task to run has to be defined t…...

快速响应:提升前端页面加载速度技巧的必知策略方案
在本文中,我们将深入探讨导致页面加载缓慢的常见原因,并分享一系列切实可行的优化策略,无论你是刚入门的新手,还是经验丰富的开发者,这些技巧都将帮助你提升网页性能,让你的用户体验畅快无阻。 相信作为前端…...

VUE-CLI配置全局SCSS变量
一.引入node-sass和sass-loader依赖 npm install --save-dev sass-loader node-sass 二. 在项目根目录中创建一个scss变量文件,比如constant.scss: 三.在vue.config.js文件中引入这个变量文件: // vue.config.js module.exports {css: {l…...

前端JavaScript导出excel,并用excel分析数据,使用SheetJS导出excel
前言:哈喽,大家好,今天给大家分享今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 …...

浅谈内网攻防之道-内网系统凭证钓鱼
你荒废的今日,正是昨日殒身之人祈求的明日。 1、FakeLogonScreen FakeLogonScreen 是用 C# 编写的应用程序,可以模拟 Windows 的登录屏幕来欺骗用户输入,从而盗取凭证 在目标的 session 会话中,指定该程序: 该工具能…...

fmql之ubuntu联网
需求:fmql搭载linux,并且可以远程访问。 连路由器 板卡通过网线与路由器连接,ip设置成同段,可以ping通: 但是ping不通baidu(如果路由器没有网/流量的话,就无法上网) ZYNQ7020通过网…...

掌握AI创作神器:10分钟搞定ComfyUI和Flux大模型
前言 最近大火的Flux 1.0模型,大家都去体验过没? 此模型是由SD的前员工创立的黑森林实验室推出,一经推出,业界掀起了非常大的反响,相关从业人员都感叹模型可以媲美甚至赶超SD了;现象级的成为了现在很多AI…...

React js Router 路由 2, (把写过的几个 app 组合起来)
完整的项目,我已经上传了,资源链接. 起因, 目的: 每次都是新建一个 react 项目,有点繁琐。 刚刚学了路由,不如写一个 大一点的 app ,把前面写过的几个 app, 都包含进去。 这部分感觉就像是, …...

Linux基础3-基础工具2(vim详解,gcc详解)
上篇文章:Linux基础3-基础工具1(什么是工具,yum,vim基础)-CSDN博客 本章重点: 1. vim详解 2. gcc详解 目录 一. vim详解 1.1 命令模式 1.2 插入模式 1.3 底行模式 二. gcc/g 2.1 程序的翻译过程(c/c代码执行过…...

GEE教程:利用sentinel-2数据进行ndwi和ndci指数的计算和下载
目录 简介 函数 normalizedDifference(bandNames) Arguments: Returns: Image Export.image.toDrive(image, description, folder, fileNamePrefix, dimensions, region, scale, crs, crsTransform, maxPixels, shardSize, fileDimensions, skipEmptyTiles, fileFormat, …...

markdown-it:将Markdown文本转换为HTML格式,展示在页面,怎么自定义里面的a标签设置为在新标签页打开
由markdown-it将文本生成html然后渲染到页面上,但是现在你点击里面生成好的链接只能在本标签页打开,怎么将其设置为在新标签打开呢? 安装markdown-it npm install markdown-it 使用markdown-it const mdi new MarkdownIt({html: true,l…...

linux在工作中常用命令
简介 记录在日常工作中,常用linux命令 查日志篇 1.统计特定内容出现的行数和次数 1.查询特定内容出现的行数 grep -c "关键词" 文件名-c:只显示匹配的行数。 2.查询特定内容出现的次数 grep -o "关键词" 文件名 | wc -l-o:只显示…...

828华为云征文|部署知识库问答系统 MaxKB
828华为云征文|部署知识库问答系统 MaxKB 一、Flexus云服务器X实例介绍1.1 云服务器介绍1.2 核心竞争力1.3 计费模式 二、Flexus云服务器X实例配置2.1 重置密码2.2 服务器连接2.3 安全组配置 三、部署 MaxKB3.1 MaxKB 介绍3.2 Docker 环境搭建3.3 MaxKB 部署3.4 Max…...

数据结构之算法复杂度
目录 前言 一、复杂度的概念 二、时间复杂度 三、大O的渐进表示法 四、空间复杂度 五、常见复杂度对比 总结 前言 本文主要讲述数据结构中的算法复杂度 一、复杂度的概念 算法在编写成可执行程序后,运行时需要耗费时间资源和空间(内存)资源。因此衡量一个算法的好坏…...

Python用TOPSIS熵权法重构粮食系统及期刊指标权重多属性决策MCDM研究|附数据代码...
原文链接:https://tecdat.cn/?p37724 在当今世界,粮食系统的稳定性至关重要。尽管现有的全球粮食系统在生产和分配方面表现出较高的效率,但仍存在大量人口遭受饥饿以及诸多粮食安全隐患。与此同时,在学术领域,准确评估…...