首页 > 其他分享 >使用Json.NET序列化对象时,忽略为null的属性

使用Json.NET序列化对象时,忽略为null的属性

时间:2025-01-23 20:31:20浏览次数:1  
标签:null Console Json WriteLine NET 序列化

通过枚举NullValueHandling.Ignore,在使用Json.NET序列化对象为Json字符串时,可以忽略为null的属性,如下代码所示:

using Newtonsoft.Json;

namespace Net8JsonNullValueDemo
{
    class People
    {
        public required string Name
        {
            get;
            set;
        }

        public int? Age
        {
            get;
            set;
        }

        public string? Desciption
        {
            get;
            set;
        }

        public decimal? Salary
        {
            get;
            set;
        }
    }

    internal class Program
    {
        static void Main(string[] args)
        {
            //构造一个People对象,Desciption和Salary属性为null
            People people = new People()
            {
                Name = "王大锤, Jack Wang",
                Age = 16
            };

            //默认情况下,Json.NET会将为null的属性也序列化到Json字符串中
            string jsonWithNullValues = JsonConvert.SerializeObject(people, Formatting.Indented);
            Console.WriteLine(jsonWithNullValues);

            Console.WriteLine();
            Console.WriteLine();

            //通过声明NullValueHandling.Ignore枚举,Json.NET会忽略掉为null的属性,序列化后的Json字符串中只有非null的属性
            jsonWithNullValues = JsonConvert.SerializeObject(people, Formatting.Indented, new JsonSerializerSettings()
            {
                NullValueHandling = NullValueHandling.Ignore
            });
            Console.WriteLine(jsonWithNullValues);

            Console.WriteLine();
            Console.WriteLine();

            Console.WriteLine("Press any key to end...");
            Console.ReadLine();
        }
    }
}

运行上面的代码,结果如下所示:

{
  "Name": "王大锤, Jack Wang",
  "Age": 16,
  "Desciption": null,
  "Salary": null
}


{
  "Name": "王大锤, Jack Wang",
  "Age": 16
}


Press any key to end...

 

可以参考下面这篇Json.NET的官方文档:

NullValueHandling setting

 

标签:null,Console,Json,WriteLine,NET,序列化
From: https://www.cnblogs.com/OpenCoder/p/18688593

相关文章

  • YOLO训练自己的分割数据集,使用labelme标注的分割数据集产生的.json文件转化为YOLOv8识
    将labelme标注的分割数据集,转化为YOLOv8识别的.txt文件数据集分为两部分,第一部分先将labelme标注的分割数据集转化为coco格式的文件,第二步,在将coco格式的JSON文件转化为yolo格式的txt文件第一部分:将labelme标注的分割数据集转化为coco格式的文件第一步首先建立一个文件夹myd......
  • C# SqlParameter设置值为0数据库实际为null的原因
    以前我也发现了这个问题,当时我是想通过SqlParameter插入一个int数据到数据库,类似下面这样 1MySqlParameter[]parameters=newMySqlParameter[]2{3newMySqlParameter("@order",0)4} 但是执行后,会发现数据库显示为null,当时没去细究原因,通过......
  • hutool工具JSONUtil序列化对象和反序列化到Map的时候,null的值因为JSONNull无法转换而
    importcn.hutool.json.JSONNull;importcom.fasterxml.jackson.core.JsonGenerator;importcom.fasterxml.jackson.databind.JsonSerializer;importcom.fasterxml.jackson.databind.SerializerProvider;importorg.springframework.boot.jackson.JsonComponent;import......
  • 【翻译】使用Jackson反序列化接口
    作者:AndrewTarry原文链接:DeserializinganinterfacewithJackson原文发表时间:2020-05-2715:10 +0100原文更新时间:2023-01-3111:22+0200在将Json和Java对象互相转换的库中,我最喜欢的是Jackson。它可以自动把对象映射到POJO。但反序列化接口需要多写些代码。Jackson能从POJO......
  • 深入探索C#中Newtonsoft.Json库的高级进阶之路
    引言在C#开发的广袤天地中,数据的序列化与反序列化是构建高效、灵活应用程序的关键环节。而Newtonsoft.Json库,作为这一领域的璀璨明星,以其强大的功能和出色的性能,成为了众多开发者的首选工具......
  • 3. 使用sql查询csv/json文件内容,还能关联查询?
    1.简介我们在前面的文章提到了calcite可以支持文件系统的数据源适配,其实官方已经提供了相应的能力,其支持csv和json的查询适配,废话不多说,直接展示.2.Maven<!--calcite文件系统支持--><dependency><groupId>org.apache.calcite</groupId><artifactId>calc......
  • IDEA中将String类型转json格式
    目录问题描述问题原因解决方案结果问题描述最近做项目需要使用Ai生成json,可生成String类型的json字符串以后,IDEA识别不了,仍然将目标json视为String类型,其中的转义字符\,全都没有识别。将变量打印出来,如下:JSONString:[\n{\"options\":[{\"value\":\"基于四大维......
  • 2025年更新「GIS数据」全国的GeoJSON、shp格式数据下载获取(精确到乡镇街道级)
    发现个可以免费下载全国 geojson 数据的网站,推荐一下。支持全国、省级、市级、区/县级、街道/乡镇级以及各级的联动数据,支持导入矢量地图渲染框架中使用,例如:D3、Echarts等geojson数据下载地址:https://geojson.hxkj.vip该项目github地址:https://github.com/TangSY/echarts-m......
  • Linux 网络 序列化与反序列化~
    概念序列化(Serialization)是将对象的状态信息转换为可以存储或传输的形式的过程。以下是关于序列化与反序列化的介绍:序列化:将对象的状态信息转换为可以存储或传输的格式,通常是字节序列或文本格式。反序列化:将序列化后的数据还原为原始对象或数据结构的过程。出现原因序列化......
  • fastjson整理
    fastjson<=1.2.24其中的base64编码是由恶意类生成的,使用时自己调整即可.{"@type":"com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl","_bytecodes":["yv66vgAAADIANAoABwAlCgAmACcIACgKACYAKQcAKgoABQAlBwArAQAGPGluaXQ+AQADKClWAQAEQ29kZQEA......