.NET 9.0 中 System.Text.Json 的全面使用指南


以下是一些 System.Text.Json 在 .NET 9.0 中的使用方式,包括序列化、反序列化、配置选项等,并附上输出结果。

  • 基本序列化和反序列化
cs 复制代码
using System;
using System.Text.Json;
public class Program
{
    public class Person
    {
        public string Name { get; set; }
        public int Age { get; set; }
    }
    public static void Main()
    {
        Person person = new Person { Name = "张三", Age = 30 };
        // 序列化
        string jsonString = JsonSerializer.Serialize(person);
        Console.WriteLine("序列化结果:");
        Console.WriteLine(jsonString);
        // 反序列化
        Person deserializedPerson = JsonSerializer.Deserialize<Person>(jsonString);
        Console.WriteLine("\n反序列化结果:");
        Console.WriteLine($"姓名:{deserializedPerson.Name}, 年龄:{deserializedPerson.Age}");
    }
}
  • 输出结果:
cs 复制代码
序列化结果:
{"Name":"张三","Age":30}
反序列化结果:
姓名:张三, 年龄:30
  • 使用配置选项
cs 复制代码
using System;
using System.Text.Json;
public class Program
{
    public class Person
    {
        public string Name { get; set; }
        public int Age { get; set; }
    }
    public static void Main()
    {
        Person person = new Person { Name = "张三", Age = 30 };
        // 配置选项
        var options = new JsonSerializerOptions
        {
            PropertyNamingPolicy = JsonNamingPolicy.CamelCase,
            WriteIndented = true
        };
        // 序列化
        string jsonString = JsonSerializer.Serialize(person, options);
        Console.WriteLine("序列化结果(使用配置选项):");
        Console.WriteLine(jsonString);
    }
}

输出结果:

cs 复制代码
序列化结果(使用配置选项):
{
  "name": "张三",
  "age": 30
}
  • 处理嵌套对象
cs 复制代码
using System;
using System.Text.Json;
public class Program
{
    public class Address
    {
        public string City { get; set; }
        public string Street { get; set; }
    }
    public class Person
    {
        public string Name { get; set; }
        public int Age { get; set; }
        public Address Address { get; set; }
    }
    public static void Main()
    {
        Person person = new Person
        {
            Name = "张三",
            Age = 30,
            Address = new Address { City = "北京", Street = "长安街" }
        };
        string jsonString = JsonSerializer.Serialize(person);
        Console.WriteLine("序列化结果(嵌套对象):");
        Console.WriteLine(jsonString);
    }
}

输出结果:

cs 复制代码
序列化结果(嵌套对象):
{"Name":"张三","Age":30,"Address":{"City":"北京","Street":"长安街"}}
  • 处理集合
cs 复制代码
using System;
using System.Collections.Generic;
using System.Text.Json;
public class Program
{
    public class Person
    {
        public string Name { get; set; }
        public int Age { get; set; }
    }
    public static void Main()
    {
        List<Person> people = new List<Person>
        {
            new Person { Name = "张三", Age = 30 },
            new Person { Name = "李四", Age = 25 }
        };
        string jsonString = JsonSerializer.Serialize(people);
        Console.WriteLine("序列化结果(集合):");
        Console.WriteLine(jsonString);
    }
}

输出结果:

cs 复制代码
序列化结果(集合):
[{"Name":"张三","Age":30},{"Name":"李四","Age":25}]
相关推荐
唐青枫1 小时前
C#.NET 定时任务必备:Quartz 全面解析与实战指南
c#·.net
该用户已不存在15 小时前
6个值得收藏的.NET ORM 框架
前端·后端·.net
小码编匠20 小时前
WPF 中的高级交互通过右键拖动实现图像灵活缩放
后端·c#·.net
追逐时光者20 小时前
一个基于 .NET 开源、简易、轻量级的进销存管理系统
后端·.net
唐青枫1 天前
C#.NET 定时任务与队列利器:Hangfire 完整教程
c#·.net
hez20101 天前
Runtime Async - 步入高性能异步时代
c#·.net·.net core·clr
追逐时光者2 天前
.NET Fiddle:一个方便易用的在线.NET代码编辑工具
后端·.net
mudtools2 天前
.NET驾驭Word之力:玩转文本与格式
c#·.net
唐青枫2 天前
C#.NET 数据库开发提速秘籍:SqlSugar 实战详解
c#·.net
追逐时光者2 天前
精选 4 款基于 .NET 开源、功能强大的 Windows 系统优化工具
后端·.net