新闻中心

C#的JSON序列化是什么?如何使用System.Text.Json进行转换?

2025-12-12
浏览次数:
返回列表
System.Text.Json是.NET Core 3.0+内置的高性能JSON库,用于C#对象与JSON字符串的相互转换。使用JsonSerializer.Serialize和Deserialize方法实现序列化与反序列化,支持通过JsonSerializerOptions配置命名策略、缩进、大小写敏感等选项,并可通过[JsonPropertyName]和[JsonIgnore]特性处理字段映射与忽略,适用于大多数现代C#开发场景。

c#的json序列化是什么?如何使用system.text.json进行转换?

JSON序列化是将C#对象转换为JSON字符串的过程,反序列化则是将JSON字符串还原为C#对象。在现代C#开发中,System.Text.Json 是官方推荐的高性能JSON处理库,从.NET Core 3.0开始内置,无需额外安装包(除非使用较新功能)。

基本用法:序列化与反序列化

使用 JsonSerializer.SerializeJsonSerializer.Deserialize 方法即可完成转换。

  • 序列化:把C#对象变成JSON字符串
  • 反序列化:把JSON字符串还原成C#对象

示例:

using System;
using System.Text.Json;

public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
}

// 序列化
var person = new Person { Name = "张三", Age = 25 };
string json = JsonSerializer.Serialize(person);
Console.WriteLine(json); // 输出: {"Name":"张三","Age":25}

// 反序列化
string inputJson = "{\"Name\":\"李四\",\"Age\":30}";
Person deserializedPerson = JsonSerializer.Deserialize<Person>(inputJson);
Console.WriteLine(deserializedPerson.Name); // 输出: 李四

常用选项配置

可以通过 JsonSerializerOptions 控制序列化行为,比如属性命名策略、缩进格式、日期处理等。

常见设置:

Ghiblio Ghiblio

专业AI吉卜力风格转换平台,将生活照变身吉卜力风格照

Ghiblio 157 查看详情 Ghiblio
  • PropertyNamingPolicy:控制属性名格式,如转为camelCase
  • WriteIndented:输出带缩进的JSON,便于阅读
  • PropertyNameCaseInsensitive:反序列化时忽略大小写

示例:

var options = new JsonSerializerOptions
{
    PropertyNamingPolicy = JsonNamingPolicy.CamelCase,
    WriteIndented = true
};

string json = JsonSerializer.Serialize(person, options);

var readOptions = new JsonSerializerOptions
{
    PropertyNameCaseInsensitive = true
};
Person result = JsonSerializer.Deserialize<Person>(inputJson, readOptions);

处理复杂类型和特性

对于字段名不匹配或需要忽略的属性,可以使用特性(Attribute)进行标记。

  • [JsonPropertyName]:指定JSON中的字段名
  • [JsonIgnore]:序列化时忽略该属性

示例:

public class Product
{
    [JsonPropertyName("product_id")]
    public string Id { get; set; }

    [JsonIgnore]
    public decimal Cost { get; set; }

    public string Name { get; set; }
}

这样序列化时,Id会变成"product_id",Cost则不会出现在JSON中。

基本上就这些。System.Text.Json 使用简单、性能好,适合大多数场景。注意类必须有公共属性和构造函数才能正确序列化。

以上就是C#的JSON序列化是什么?如何使用System.Text.Json进行转换?的详细内容,更多请关注其它相关文章!


# 字段名  # 陶山网站建设费用  # 河南营销型网站推广  # seo页面描述能改吗  # 陕西网站优化推广方案  # 长沙网站建设维护  # 内蒙百度关键词优化排名  # 竞彩推广员招聘信息网站  # 网站推广渠道哪里不错  # 南京seo优化行业  # 短信营销推广活动  # 适用于  # 出现在  # 则是  # js  # 李四  # 化与  # 如何实现  # 高性能  # 如何使用  # 序列化  # .net  # cos  # c#开发  # json处理  # c#  # json 


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


相关推荐: 谷歌浏览器一键优化方案_谷歌浏览器直达主页极速不卡版  qq浏览器如何查看和导出已保存的密码 qq浏览器密码管理器数据备份教程  c++项目目录结构应该如何组织_c++工程化项目结构规范  蓝湖怎样用切图标注提对接效率_蓝湖用切图标注提对接效率【设计对接】  汽水音乐车机版横屏版7.1 汽水音乐车机版横屏版下载入口  MongoDB Aggregation:在嵌套对象数组中精确匹配ObjectId  QQ邮箱电脑版登录入口_QQ邮箱官方网站登录平台  Animex动漫社网入口地址 Animex动漫社网正版在线入口  Golang如何优雅处理error_Golang error处理最佳实践总结  Win11怎么设置鼠标主按键_Win11鼠标左右键功能互换  J*a应用程序首次运行自动创建文件与目录的最佳实践  html两个JS只运行一个怎么办_让双JS在html中都运行方法【技巧】  谷歌邮箱注册显示错误Gmail服务器异常与延迟处理  文心一言怎样用批量生成做多版文案_文心一言用批量生成做多版文案【批量创作】  葱吃多了会怎样 葱吃多了会伤胃吗  PDF怎么合并PDF并保持格式_PDF合并文件保持排版教程  文本文档写html代码怎么运行_文本文档html代码运行步骤【教程】  漫蛙Manwa2官网入口地址分享 漫蛙漫画PC版永久访问通道  飞书妙记怎样用语音转文字速记_飞书妙记用语音转文字速记【速记方法】  必由学官网首页入口 必由学教师网页版登录指南  12306选座如何查看座位示意图_12306座位示意图解读与使用  Win11截图该按哪些键 Win11截屏完整流程解析【教程】  J*aScript动态修改指定div内所有a标签样式指南  c++ dfs和bfs代码 c++深度广度优先搜索算法  C++的std::forward_list怎么用_C++ STL中单向链表容器的特点与应用  AO3网页版最新入口合集 Archive of Our Own在线访问指南  J*aScript中向JSON对象添加新属性的正确姿势  Google翻译怎么语音输入_Google翻译语音输入功能使用与设置方法  解决Tabulator日期时间排序问题的专业指南  深入理解Go语言中的指针类型:以*string为例  解决移动端滚动问题的overflow属性应用指南  wps文字怎么插入目录并自动更新_wps文字如何插入目录并自动更新方法  Win11怎么设置开机NumLock亮 Win11修改注册表InitialKeyboardIndicators值  天猫双十一预售商品怎么退款_天猫双十一预售退款操作指南  迅雷下载到U盘速度很慢怎么办_迅雷U盘下载慢优化方法  Lar*el表单中优雅地处理“返回”按钮以规避验证:最佳实践指南  批改网学生版PC登录 批改网官网登录系统入口  如何使用Go和Martini动态服务解码后的图片  Lar*el 递归关系中排除指定分支的教程  Go语言JSON解析深度指南:动态访问与结构体映射实践  魅族20怎样在浏览器开无图省流_iPhone魅族20浏览器开无图省流【流量节省】  文心一言怎样用插件调度API数据_文心一言用插件调度API数据【API调用】  UE5.7引擎表现爆炸优化无敌!5090跑4K稳定60FPS  必由学官网快捷入口 必由学网页版在线学习平台  响应式容器内容自动缩放与宽高比维持教程  Linux如何排查内存不足OOME问题_LinuxOOM分析教程  fishbowl官网免费版 fishbowl养鱼网站入口  AO3最新官网入口公告_2025AO3镜像站实时查询方法  c++如何使用Meson构建系统_c++比CMake更快的构建工具  精准捕获:如何在页面中监听除特定元素外的所有点击事件 

搜索