.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}]
相关推荐
z落落3 小时前
C#ToolStrip+StatusStrip 状态栏实时显示系统时间+NotifyIcon系统托盘
开发语言·c#
ctrl_v助手4 小时前
VisionPro (R) QuickBuild相机的连接
服务器·笔记·数码相机·c#
北域码匠5 小时前
奇偶归并排序:并行计算的排序利器
数据结构·算法·c#·排序算法
渔舟唱晚,雁阵惊寒5 小时前
CSDN博客内容丢失如何恢复?
json
zhangfeng11336 小时前
国家超算中心 昆山站 异构加速卡1 显存16GB详细配置, 海光 Z100SM HCU
linux·网络·深度学习·c#
z落落6 小时前
C# WinForm TreeView 树形控件+ListView控件+菜单栏
开发语言·c#
衣乌安、6 小时前
JSON-RPC协议
网络协议·rpc·json
PixelBai7 小时前
JSON过滤使用教程:从入门到精通
javascript·chrome·json
tonydf7 小时前
DotNet项目接入Copilot SDK简单案例
后端·.net·github copilot
ABprogramming7 小时前
Aspire入门指南
c#·.net