当前位置: 首页 > news >正文

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])

环境&#xff1a; .net 6.0vs2022 系列篇&#xff1a; 《c#&#xff1a;System.Text.Json 的使用一》 《c#&#xff1a;System.Text.Json 的使用二》 《c#&#xff1a;System.Text.Json 的使用三&#xff08;从Newtonsoft迁移&#xff09;》 《c#&#xff1a;System.Text.Json…...

【CPU】CPU的物理核、逻辑核、超线程判断及L1、L2、L3缓存、CacheLine和CPU的TBL说明

CPU物理核及L1、L2、L3及缓存 CPU缓存 CPU 缓存是一种用于存储临时数据以提高计算机程序性能的内存层次结构。它通常分为三个层次&#xff1a;L1&#xff08;一级&#xff09;、L2&#xff08;二级&#xff09;和L3&#xff08;三级&#xff09;缓存。缓存大小是CPU的重…...

NET WPF使用组件库HandyControl

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

计算机毕业设计之:教学平台微信小程序(

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

VMware Fusion虚拟机Mac版 安装Win10系统教程

Mac分享吧 文章目录 Win10安装完成&#xff0c;软件打开效果一、VMware安装Windows10虚拟机1️⃣&#xff1a;准备镜像2️⃣&#xff1a;创建虚拟机3️⃣&#xff1a;虚拟机设置4️⃣&#xff1a;安装虚拟机&#xff08;步骤和Win11安装步骤类似&#xff0c;此处相同步骤处没换…...

头戴式蓝牙耳机性价比高的有哪些?四款高能性价比机型对比推荐

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

Linux:make,Makefile

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

基于代理的分布式身份管理方案

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

VSCode开发ros程序无法智能提示的解决方法(一)

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

grep命令如何实现正则表达式搜索?

grep 命令支持使用正则表达式&#xff08;Regular Expression&#xff0c;简称 regex&#xff09;进行搜索 以下是一些使用正则表达式的基本示例&#xff1a; 搜索包含 “example” 的行&#xff1a; grep "example" file.txt搜索以 “abc” 开头的行&#xff1a; g…...

Vue报错 ‘vite‘ 不是内部或外部命令,也不是可运行的程序或批处理文件

报错 vue-project0.0.0 dev vite‘vite’ 不是内部或外部命令&#xff0c;也不是可运行的程序 或批处理文件。解决 第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.修…...

页面关键路径渲染详解

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

错题集锦之C语言

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

【2024华为杯数学建模竞赛】E题 解题思路 | 视频特征提取

这高速公路应急车道紧急启用模型 问题 1解题思路解题思路 问题 2解题思路 问题 3解题思路 问题 1 某路段&#xff08;长度约5000m&#xff0c;行车道2应急车道1&#xff09;上有四个视频观测点&#xff08;见示意图1&#xff09;。请基于该路段四个视频数据解决如下问题&#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…...

快速响应:提升前端页面加载速度技巧的必知策略方案

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

VUE-CLI配置全局SCSS变量

一.引入node-sass和sass-loader依赖 npm install --save-dev sass-loader node-sass 二. 在项目根目录中创建一个scss变量文件&#xff0c;比如constant.scss&#xff1a; 三.在vue.config.js文件中引入这个变量文件&#xff1a; // vue.config.js module.exports {css: {l…...

前端JavaScript导出excel,并用excel分析数据,使用SheetJS导出excel

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;今天给大家分享今天给大家分享一篇文章&#xff01;并提供具体代码帮助大家深入理解&#xff0c;彻底掌握&#xff01;创作不易&#xff0c;如果能帮助到大家或者给大家一些灵感和启发&#xff0c;欢迎收藏关注哦 &#x1f…...

浅谈内网攻防之道-内网系统凭证钓鱼

你荒废的今日&#xff0c;正是昨日殒身之人祈求的明日。 1、FakeLogonScreen FakeLogonScreen 是用 C# 编写的应用程序&#xff0c;可以模拟 Windows 的登录屏幕来欺骗用户输入&#xff0c;从而盗取凭证 在目标的 session 会话中&#xff0c;指定该程序&#xff1a; 该工具能…...

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …...

智慧医疗能源事业线深度画像分析(上)

引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...

Keil 中设置 STM32 Flash 和 RAM 地址详解

文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...

从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)

设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile&#xff0c;新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...

Caliper 配置文件解析:config.yaml

Caliper 是一个区块链性能基准测试工具,用于评估不同区块链平台的性能。下面我将详细解释你提供的 fisco-bcos.json 文件结构,并说明它与 config.yaml 文件的关系。 fisco-bcos.json 文件解析 这个文件是针对 FISCO-BCOS 区块链网络的 Caliper 配置文件,主要包含以下几个部…...

Unity | AmplifyShaderEditor插件基础(第七集:平面波动shader)

目录 一、&#x1f44b;&#x1f3fb;前言 二、&#x1f608;sinx波动的基本原理 三、&#x1f608;波动起来 1.sinx节点介绍 2.vertexPosition 3.集成Vector3 a.节点Append b.连起来 4.波动起来 a.波动的原理 b.时间节点 c.sinx的处理 四、&#x1f30a;波动优化…...

基于TurtleBot3在Gazebo地图实现机器人远程控制

1. TurtleBot3环境配置 # 下载TurtleBot3核心包 mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src git clone -b noetic-devel https://github.com/ROBOTIS-GIT/turtlebot3.git git clone -b noetic https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git git clone -b noetic-dev…...

MFC 抛体运动模拟:常见问题解决与界面美化

在 MFC 中开发抛体运动模拟程序时,我们常遇到 轨迹残留、无效刷新、视觉单调、物理逻辑瑕疵 等问题。本文将针对这些痛点,详细解析原因并提供解决方案,同时兼顾界面美化,让模拟效果更专业、更高效。 问题一:历史轨迹与小球残影残留 现象 小球运动后,历史位置的 “残影”…...

逻辑回归暴力训练预测金融欺诈

简述 「使用逻辑回归暴力预测金融欺诈&#xff0c;并不断增加特征维度持续测试」的做法&#xff0c;体现了一种逐步建模与迭代验证的实验思路&#xff0c;在金融欺诈检测中非常有价值&#xff0c;本文作为一篇回顾性记录了早年间公司给某行做反欺诈预测用到的技术和思路。百度…...

第7篇:中间件全链路监控与 SQL 性能分析实践

7.1 章节导读 在构建数据库中间件的过程中&#xff0c;可观测性 和 性能分析 是保障系统稳定性与可维护性的核心能力。 特别是在复杂分布式场景中&#xff0c;必须做到&#xff1a; &#x1f50d; 追踪每一条 SQL 的生命周期&#xff08;从入口到数据库执行&#xff09;&#…...