新闻中心

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

2025-12-16
浏览次数:
返回列表
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 字符串。

示例:

晓象AI资讯阅读神器 晓象AI资讯阅读神器

晓象-AI时代的资讯阅读神器

晓象AI资讯阅读神器 72 查看详情 晓象AI资讯阅读神器
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(如 "2025-05-10T08:30:00Z"),要改格式需用 Converters(如 JsonStringEnumConverter 或自定义 JsonConverter<datetime></datetime>
  • 不支持循环引用:对象 A 引用 B,B 又引用 A → 默认抛异常;可配合 ReferenceHandler.Preserve 解决(.NET 6+)
  • 字典 key 必须是 string:非 string key(如 Dictionary<int string></int>)会失败,建议先转成 Dictionary<string string></string> 或用自定义 converter

基本上就这些。

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


# 中文网  # 卢龙新型网站建设  # 网文小说关键词排名推荐  # 西工网站制作推广  # 淘特推广营销模式  # 网站建设优化推广费用  # 招聘类网站怎么做优化  # 山东网站建设年检材料  # 网站建设小书签的图标  # 如何做企业网站优化  # 随州网站建设批发价  # 解决问题  # 很简单  # js  # 相关文章  # 不需要  # 如何将  # 转成  # 不支持  # 自定义  # 序列化  # .net  # c#  # stream  # 大数据  # json 


相关栏目: 【 科技资讯46185 】 【 网络学院92790


相关推荐: 妖精动漫免费平台 妖精动漫官网资源观看网址  html网页设计源代码怎么运行_运行html网页设计源代码步骤【指南】  夸克浏览器网页版最新地址 夸克浏览器官方入口合集  如何在J*a中使用Locale处理多语言环境  夸克浏览器桌面版同步不了书签怎么处理 夸克浏览器跨设备同步异常解决方案  J*aScript 字符串标签转换:使用正则表达式高效替换  fishbowl官网免费版 fishbowl养鱼网站入口  word邮件合并后日期格式不对怎么改_Word邮件合并日期格式修改方法  QQ邮箱登录平台入口 QQ邮箱网页版邮箱官方入口  如何高效处理PHP中的Excel数据导入导出?PortPHP/Spreadsheet助你轻松搞定!  格力空气能E5故障代码是什么情况_格力空气能E5代码解析与应对措施  PySpark中从现有列右侧提取可变长度字符创建新列的教程  解决Tabulator日期时间排序问题的专业指南  百度网盘网页版入口 百度网盘网页版官方登录网址  J*a递归快速排序中静态变量导致数据累积问题的解决方案  在Pyomo中实现基于变量的条件约束:Big-M方法详解  解决Python单元测试中Mock异常方法调用计数为零的问题  Excel中VLOOKUP的第四个参数是干什么用的_Excel VLOOKUP第四参数作用解析  《刺客信条4:黑旗》重制版新细节曝光:无缝加载 地图更细致!  J*a里如何实现线程安全的懒加载单例_懒加载单例实现方法解析  使用 Pandas 高效处理 .dat 文件:数据清洗与数值计算实战  小米14应用无法联网原因分析_小米14网络权限修复  c++如何实现一个简单的ECS框架_c++数据驱动设计与游戏开发  搜狗浏览器如何使用密码生成器创建强密码 搜狗浏览器内置密码安全工具  高德地图沿途添加点失败如何解决 高德多点规划方法  如何在 Excel Online 和 Google 表格中更改日期格式  SteamMachine定价或为699美元 大家想入手吗?  sublime怎么预览Markdown渲染效果_Markdown Preview插件 for sublime教程  反效果?《战地6》免费试玩开启后玩家数不升反降  必由学官方网站入口 必由学学生教师共用登录通道  c++中的const_cast和reinterpret_cast怎么用_c++四种类型转换  PostgreSQL海量数据高效导入策略:Python与Django实践指南  vivo浏览器怎么扫描二维码 vivo浏览器内置扫一扫功能使用方法  GemBox Document HTML转PDF垂直文本渲染问题及解决方案  必由学在线入口 必由学网页版快速登录入口  AO3官网镜像链接 Archive of Our Own同人文在线浏览  12306选座怎么选到特殊座位_12306特殊座位选择注意事项  在J*a中如何开发在线活动报名与管理系统_活动报名管理项目实战解析  PS5 Pro有点优势但不多! 《燕云十六声》PS5平台与PC性能画面对比  批改网学生版PC登录 批改网官网登录系统入口  Win11怎么安装Linux子系统 Win11 WSL2安装Ubuntu及环境配置指南  Promise错误处理:在catch后终止链式then执行的策略  KFC套餐升级怎么获取优惠代码_KFC套餐升级活动与优惠代码获取方法  Android Studio计算器C键功能异常排查与修复教程  Animex动漫社网入口地址 Animex动漫社网正版在线入口  Golang如何使用net/url解析URL_Golang URL解析与处理方法  J*a里如何使用N*igableMap进行导航操作_可导航Map操作技巧解析  C++的std::forward_list怎么用_C++ STL中单向链表容器的特点与应用  2025AO3夸克浏览器通道_AO3手机HTTPS安全入口分享  J*aScript实现单选按钮与关联输入框的联动禁用教程 

搜索