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

JSON序列化是将C#对象转换为JSON字符串的过程,反序列化则是将JSON字符串还原为C#对象。在现代C#开发中,System.Text.Json 是官方推荐的高性能JSON处理库,从.NET Core 3.0开始内置,无需额外安装包(除非使用较新功能)。
基本用法:序列化与反序列化
使用 JsonSerializer.Serialize 和 JsonSerializer.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
专业AI吉卜力风格转换平台,将生活照变身吉卜力风格照
157
查看详情
- 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更快的构建工具
精准捕获:如何在页面中监听除特定元素外的所有点击事件


2025-12-12
浏览次数:次
返回列表
PropertyNamingPolicy = JsonNamingPolicy.CamelCase,
WriteIndented = true
};
string json = JsonSerializer.Serialize(person, options);
var readOptions = new JsonSerializerOptions
{
PropertyNameCaseInsensitive = true
};
Person result = JsonSerializer.Deserialize<Person>(inputJson, readOptions);