.NET 对象转Json的几种常见方式实用指南
平时做技术实践时,很多问题不是概念不会,而是细节没串起来。拿“.NET 对象转Json的几种常见方式”来说,它看着像小点,放到项目里常会牵出环境、配置、兼容性和维护成本。下面按实际采用顺序,把思路、关键写法和容易踩坑的地方讲清楚,便于大家直接对照操作。
目录
- 1. 采用 System.Text.Json (建议,.NET Core 3.0+)
- 基本序列化
- 带选项的序列化
- 2. 采用 Newtonsoft.Json (Json.NET)
- Newtonsoft.Json 高级用法
- 3. 处理复杂对象
- 包含集合的对象
- 匿名对象序列化
- 4. 自定义序列化选项
- System.Text.Json 自定义
- 采用特性控制序列化
- 5. 性能优化
- 采用源生成器 (System.Text.Json)
- 选择建议
在.NET中将对象转换为JSON有多种方法,以下是常用的几种方式:
1. 采用 System.Text.Json (建议,.NET Core 3.0+)
基本序列化
using System.Text.Json;
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
public string Email { get; set; }
}
// 对象转JSON
var person = new Person { Name = "张三", Age = 25, Email = "[email protected]" };
string jsonString = JsonSerializer.Serialize(person);
Console.WriteLine(jsonString);
// 输出: {"Name":"张三","Age":25,"Email":"[email protected]"}
带选项的序列化
var options = new JsonSerializerOptions
{
WriteIndented = true, // 格式化输出
PropertyNamingPolicy = JsonNamingPolicy.CamelCase // 驼峰命名
};
string jsonString = JsonSerializer.Serialize(person, options);
Console.WriteLine(jsonString);
// 输出:
// {
// "name": "张三",
// "age": 25,
// "email": "[email protected]"
// }
2. 采用 Newtonsoft.Json (Json.NET)
首先安装 NuGet 包:
Install-Package Newtonsoft.Json
using Newtonsoft.Json;
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
public string Email { get; set; }
}
// 基本序列化
var person = new Person { Name = "李四", Age = 30, Email = "[email protected]" };
string jsonString = JsonConvert.SerializeObject(person);
Console.WriteLine(jsonString);
// 带格式的序列化
string formattedJson = JsonConvert.SerializeObject(person, Formatting.Indented);
Console.WriteLine(formattedJson);
Newtonsoft.Json 高级用法
var settings = new JsonSerializerSettings
{
Formatting = Formatting.Indented,
NullValueHandling = NullValueHandling.Ignore,
DateFormatString = "yyyy-MM-dd HH:mm:ss"
};
string jsonString = JsonConvert.SerializeObject(person, settings);
3. 处理复杂对象
包含集合的对象
public class Department
{
public string Name { get; set; }
public List<Person> Employees { get; set; }
}
var department = new Department
{
Name = "技术部",
Employees = new List<Person>
{
new Person { Name = "王五", Age = 28, Email = "[email protected]" },
new Person { Name = "赵六", Age = 32, Email = "[email protected]" }
}
};
string jsonString = JsonSerializer.Serialize(department, new JsonSerializerOptions { WriteIndented = true });
Console.WriteLine(jsonString);
匿名对象序列化
var anonymousObject = new
{
Id = 1,
Description = "测试对象",
CreateTime = DateTime.Now
};
string jsonString = JsonSerializer.Serialize(anonymousObject);
Console.WriteLine(jsonString);
4. 自定义序列化选项
System.Text.Json 自定义
var options = new JsonSerializerOptions
{
WriteIndented = true,
PropertyNamingPolicy = JsonNamingPolicy.CamelCase,
DefaultIgnoreCondition = System.Text.Json.Serialization.JsonIgnoreCondition.WhenWritingNull,
Converters = { new JsonStringEnumConverter() } // 枚举转换为字符串
};
string jsonString = JsonSerializer.Serialize(person, options);
采用特性控制序列化
public class Product
{
[JsonPropertyName("productName")] // System.Text.Json
public string Name { get; set; }
[JsonIgnore] // 忽略该属性
public string InternalCode { get; set; }
[JsonPropertyOrder(1)] // 属性顺序
public decimal Price { get; set; }
}
5. 性能优化
采用源生成器 (System.Text.Json)
[JsonSerializable(typeof(Person))]
[JsonSerializable(typeof(List<Person>))]
public partial class MyJsonContext : JsonSerializerContext
{
}
// 使用源生成器进行序列化
var person = new Person { Name = "测试", Age = 25 };
string jsonString = JsonSerializer.Serialize(person, MyJsonContext.Default.Person);
选择建议
- 新项目:建议采用
System.Text.Json,性能更好,无需额外依赖 - 现有项目:如果已经在采用 Newtonsoft.Json,能够继续采用
- 复杂场景:Newtonsoft.Json 功能更丰富,兼容更多复杂场景
两种方法都很常用,根据项目需求和个人偏好选择即可。
到此这篇关于.NET 对象转Json的几种常用方式的文章就介绍到这了,更多相关.NET 对象转Json内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多兼容脚本之家!
您可能感兴趣的文章:
- C#采用Json.Net对JSON与对象的序列化与反序列化
- ASP.NET采用Ajax得到Json对象的方法
- ASP.NET自带对象JSON字符串与实体类的转换
- ASP.NET中实现把Json数据转换为ADO.NET DataSet对象
相关资讯
-
09.01
燕云十六声不见山野外首领位置在哪
-
09.01
三角洲行动如何主动部署脚架
-
09.01
鸣潮爱弥斯培养攻略 鸣潮爱弥斯声骸武器阵容推荐
-
09.01
明日方舟终末地顶配物理队如何养成 明日方舟终末地顶配物理队养成攻略
-
09.01
黑白的守护在那里得到
-
09.01
原神龙龙同游第一关如何过
游戏推荐
推荐专题
热门阅读
推荐下载
-
-
下载
- |
-
-
下载
- 《行尸走肉第一章》免安装中文汉化硬盘版下载
- 单机|436 MB
- 一款以动作冒险为主题的游戏
-
-
下载
- 《街头霸王X铁拳》免安装中文汉化硬盘版下载
- 单机|111MB
- 一款非常好玩的格斗游戏
-
-
下载
- |
-
-
下载
- 《暗黑破坏神3》免安装繁体中文正式版下载
- 单机|7630 MB
- 一款以角色扮演为主题的游戏
-
-
下载
- 《马克思佩恩3》免安装硬盘版下载
- 单机|27033 MB
- 一款以第三人称射击为主题的游戏