news 2026/4/28 17:21:19

【.net core】剔除JSON对象中值为null的字段

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【.net core】剔除JSON对象中值为null的字段

方法:

/// <summary> /// 递归剔除JObject中值为null的字段 /// </summary> static void RemoveNullProperties(JToken token) { if (token.Type == JTokenType.Object) { var jObj = (JObject)token; var propertiesToRemove = jObj.Properties() .Where(p => p.Value == null || p.Value.Type == JTokenType.Null || string.IsNullOrEmpty((string)p.Value)|| (p.Value.Type == JTokenType.String && string.IsNullOrWhiteSpace((string)p.Value)) || (p.Value.Type == JTokenType.Array && !p.Value.HasValues)) .ToList(); foreach (var prop in propertiesToRemove) prop.Remove(); foreach (var child in jObj.Children()) { if (child.Children().Count() > 0) { RemoveNullProperties(child); } } } else if (token.Type == JTokenType.Property) { if (token.Children().Count() > 0) { var childs = token.Children().Where(p => p == null || p.Type == JTokenType.Null || string.IsNullOrEmpty((string)p) || (p.Type == JTokenType.String && string.IsNullOrWhiteSpace((string)p)) || (p.Type == JTokenType.Array && !p.HasValues)) .ToList(); foreach (var prop in childs) prop.Remove(); foreach (var child in token.Children()) { if (child.Children().Count() > 0) { RemoveNullProperties(child); } } } } else if (token.Type == JTokenType.Array) { var jArray = (JArray)token; // 清理数组内部的 null / "" for (int i = jArray.Count - 1; i >= 0; i--) { var item = jArray[i]; if (item.Type == JTokenType.Null || (item.Type == JTokenType.String && string.IsNullOrWhiteSpace((string)item))) { jArray.RemoveAt(i); } } // 递归数组内对象/子数组 foreach (var child in jArray) RemoveNullProperties(child); // 如果数组最后变空,也删除 if (!jArray.HasValues) { if (jArray.Parent is JProperty prop) prop.Remove(); } } }

调用:

object reqHeader = new { transTime = "20260421171327", reqId = "123456", test = null }; JObject reqHeaderJobject = JObject.FromObject(reqHeader); RemoveNullProperties(reqHeaderJobject); //剔除后reqHeaderJobject为{"transTime":"20260421171327","reqId":"123456"}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/28 17:21:11

卡梅德生物技术快报|抗体标记:单域抗体标记技术:生物医学成像探针的设计、构建与工程化实现

摘要单域抗体凭借分子量小、稳定性高、组织穿透性强、免疫原性低等优势&#xff0c;成为生物医学成像探针的优选载体。抗体标记是将单域抗体转化为功能性成像探针的核心环节&#xff0c;直接决定探针的靶向性、信号强度、体内分布与临床转化潜力。本文围绕单域抗体抗体标记的技…

作者头像 李华
网站建设 2026/4/28 17:19:27

药厂生产线设备安装:从洁净合规到稳定投产的完整解析

一、什么是药厂生产线设备安装&#xff1f;药厂生产线设备安装&#xff0c;是指在制药企业的新建厂房、洁净车间、改造车间或扩产项目中&#xff0c;围绕药品生产工艺要求&#xff0c;对制粒、混合、压片、胶囊填充、灌装、冻干、包装、灭菌、纯化水、配液、输送、检测、自动化…

作者头像 李华
网站建设 2026/4/28 17:12:25

避开这3个坑!LIN总线节点配置与诊断的常见误区及解决方案

避开这3个坑&#xff01;LIN总线节点配置与诊断的常见误区及解决方案 在汽车电子系统的开发中&#xff0c;LIN总线因其低成本、高可靠性的特点&#xff0c;已成为车身控制模块(BCM)、车门模块、座椅控制等场景的首选通信方案。然而&#xff0c;随着节点数量的增加和功能复杂度的…

作者头像 李华
网站建设 2026/4/28 17:11:27

知网AI率85%直降至4%!2026年高效降AI实操全指南

论文基础数据与初次检测结果 我是2026届经济学专业毕业生&#xff0c;毕业论文研究方向为数字普惠金融对县域消费的影响&#xff0c;全文共2.86万字&#xff0c;分为5个章节。4月13日提交初稿后&#xff0c;拿到的知网2026新版AIGC检测报告让我直接慌了神&#xff1a;全文AI占…

作者头像 李华