System.Text.Json 序列化核心是 JsonSerializer.Serialize(),.NET Core 3.0+ 内置;支持匿名类型、POCO、集合等,默认驼峰命名;通过 JsonSerializerOptions 可配置命名策略、null 处理、缩进等;支持流式写入和 Utf8JsonWriter;注意字段默认不序列化、日期格式为 ISO 8601、不支持循环引用(需 ReferenceHandler.Preserve)、字典 key 必须为 string。

用 System.Text.Json 将对象序列化为 JSON 很简单,核心是 JsonSerializer.Serialize() 方法,不需要额外安装包(.NET Core 3.0+ 和 .NET 5+ 内置)。
最常用场景:把一个普通类实例转成 JSON 字符串。
示例:
var person = new { Name = "张三", Age = 28 };
string json = JsonSerializer.Serialize(person);
// 输出:{"Name":"张三","Age":28}
支持匿名类型、POCO 类、集合、基本类型等。默认使用驼峰命名(如 FirstName → firstName),不加配置就自动优化。
需要自定义格式时(比如保留 Pascal 命名、处理循环引用、忽略 null 值),传入 JsonSerializerOptions 实例。
常见设置:
PropertyNamingPolicy = null
DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull
WriteIndented = true
ReadCommentHandling = JsonCommentHandling.Skip
示例:
var options = new JsonSerializerOptions
{
WriteIndented = true,
PropertyNamingPolicy = null,
DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull
};
string json = JsonSerializer.Serialize(person, options);
大数据量或大对象时,别全加载到字符串里,直接写入 Stream 或文件更高效。
示例(写入文件):
using var stream = File.Create("data.json");
JsonSerializer.Serialize(stream, person, options);
也支持 Utf8JsonWriter 手动控制写入,适合构建动态 JSON 或高性能场景。
这些情况容易报错或结果不符合预期:
[JsonPropertyName] 并启用 IncludeFields = true
"2023-05-10T08:30:00Z"),要改格式需用 Converters(如 JsonStringEnumConverter 或自定义 JsonConverter<datetime></datetime>)ReferenceHandler.Preserve 解决(.NET 6+)Dictionary<int string></int>)会失败,建议先转成 Dictionary<string string></string> 或用自定义 converter基本上就这些。
以上就是C#怎么将对象序列化为JSON System.Text.Json使用方法的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号