在现代C#开发中,处理JSON数据是家常便饭。无论是Web API、微服务通信还是配置文件读写,都离不开JSON的序列化与反序列化。从.NET Core 3.0开始,微软推出了高性能的 System.Text.Json 库,用以替代第三方库如Newtonsoft.Json(Json.NET)。本文将手把手教你如何使用 System.Text.Json 进行灵活、高效的 JSON序列化配置,即使你是编程小白也能轻松上手!
System.Text.Json 是 .NET 提供的内置 JSON 处理库,具有高性能、低内存占用、安全默认值等优点。它通过 JsonSerializer 类提供序列化(对象 → JSON)和反序列化(JSON → 对象)功能。
先来看一个最简单的例子:
using System;using System.Text.Json;public class Person{ public string Name { get; set; } public int Age { get; set; }}class Program{ static void Main() { var person = new Person { Name = "张三", Age = 28 }; string json = JsonSerializer.Serialize(person); Console.WriteLine(json); // 输出:{"Name":"张三","Age":28} }} 默认情况下,属性名会保持原样(PascalCase),但很多前端框架习惯使用 camelCase(小驼峰)。这时就需要用到 JsonSerializerOptions 来进行自定义配置。
JsonSerializerOptions 是 System.Text.Json 的核心配置类,几乎所有自定义行为都通过它实现。下面介绍几个常用配置项:
将 C# 的 PascalCase 转为 JSON 的 camelCase:
var options = new JsonSerializerOptions{ PropertyNamingPolicy = JsonNamingPolicy.CamelCase};string json = JsonSerializer.Serialize(person, options);// 输出:{"name":"张三","age":28} 让 JSON 更易读(适合调试):
var options = new JsonSerializerOptions{ WriteIndented = true};string json = JsonSerializer.Serialize(person, options);/* 输出:{ "Name": "张三", "Age": 28} */ 避免序列化 null 或默认值字段:
var options = new JsonSerializerOptions{ DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull};var person = new Person { Name = "李四" }; // Age 默认为 0string json = JsonSerializer.Serialize(person, options);// 输出:{"Name":"李四"} (Age 被忽略) System.Text.Json 默认使用 ISO 8601 格式(如 2023-10-01T12:00:00Z),但有时你需要自定义格式:
var options = new JsonSerializerOptions();options.Converters.Add(new JsonStringEnumConverter()); // 枚举转字符串options.Converters.Add(new CustomDateTimeConverter("yyyy-MM-dd HH:mm:ss")); // 自定义日期转换器// 注意:需自行实现 CustomDateTimeConverter 或使用第三方库 在 ASP.NET Core 项目中,你通常会在 Program.cs 中统一配置 JSON 行为:
var builder = WebApplication.CreateBuilder(args);builder.Services.ConfigureHttpJsonOptions(options =>{ options.SerializerOptions.PropertyNamingPolicy = JsonNamingPolicy.CamelCase; options.SerializerOptions.WriteIndented = false; options.SerializerOptions.DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull;});// 或者针对 MVCbuilder.Services.Configure(options =>{ options.JsonSerializerOptions.PropertyNamingPolicy = JsonNamingPolicy.CamelCase;}); System.Text.Json 默认支持 Unicode。[JsonInclude] 特性或自定义转换器实现。JsonSerializerOptions,应作为静态只读字段复用。通过合理使用 JsonSerializerOptions,你可以完全掌控 System.Text.Json 的序列化行为。无论你是需要调整命名风格、美化输出格式,还是忽略空值、自定义类型转换,都能轻松实现。掌握这些 C# JSON序列化 技巧,将极大提升你的开发效率和代码质量。
希望这篇 System.Text.Json教程 能帮助你快速上手!记得在实际项目中根据需求灵活组合各种 JsonSerializerOptions设置,打造高效、可维护的 JSON 处理逻辑。
本文由主机测评网于2025-12-12发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://www.vpshk.cn/2025126550.html