.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}]
相关推荐
加号38 小时前
【C#】 串口通信技术深度解析及实现
开发语言·c#
魏杨杨9 小时前
一个程序员眼中的 AI 核心概念,讲透 LLM 、Agent 、MCP 、Skill 、RAG...
ai·.net·agent·claude code
无风听海10 小时前
C# 隐式转换深度解析
java·开发语言·c#
LateFrames10 小时前
520 - 如何说晚安 (WPF)
c#·wpf·浪漫·ui体验
魔法阵维护师11 小时前
从零开发游戏需要学习的c#模块,第十四章(保存和加载)
学习·游戏·c#
Wang153013 小时前
js核心概念
json
Xin_ye1008615 小时前
C# 零基础到精通教程 - 第十一章:LINQ——语言集成查询
开发语言·c#
Xin_ye1008615 小时前
C# 零基础到精通教程 - 第十章:集合与泛型——高效管理数据
开发语言·c#
魔法阵维护师17 小时前
从零开发游戏需要学习的c#模块,第十一章(rpg小游戏入门,上篇,地图与移动)
学习·游戏·c#
雪豹阿伟17 小时前
8.C# —— 随机数、DateTime时间、字符串
c#·上位机