C#怎么将对象序列化为JSON System.Text.Json使用方法

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

c#怎么将对象序列化为json system.text.json使用方法

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 类、集合、基本类型等。默认使用驼峰命名(如 FirstNamefirstName),不加配置就自动优化。

控制序列化行为:用 JsonSerializerOptions

需要自定义格式时(比如保留 Pascal 命名、处理循环引用、忽略 null 值),传入 JsonSerializerOptions 实例。

常见设置:

保持属性原名:设置 PropertyNamingPolicy = null 忽略 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 或高性能场景。

注意常见坑

这些情况容易报错或结果不符合预期:

不支持字段(field)序列化:只序列化 public 属性(property),字段需手动加 [JsonPropertyName] 并启用 IncludeFields = true 日期格式默认是 ISO 8601(如 "2023-05-10T08:30:00Z"),要改格式需用 Converters(如 JsonStringEnumConverter 或自定义 JsonConverter不支持循环引用:对象 A 引用 B,B 又引用 A → 默认抛异常;可配合 ReferenceHandler.Preserve 解决(.NET 6+) 字典 key 必须是 string:非 string key(如 Dictionary)会失败,建议先转成 Dictionary 或用自定义 converter

基本上就这些。

以上就是C#怎么将对象序列化为JSON System.Text.Json使用方法的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1443138.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月17日 19:47:22
下一篇 2025年12月12日 12:05:38

相关推荐

发表回复

登录后才能评论
关注微信