首页 > 编程语言 >C#之System.Text.Json的用法

C#之System.Text.Json的用法

时间:2023-10-25 13:34:59浏览次数:34  
标签:C# Text JSON System Json 序列化 public

System.Text.Json 是 C# 中的一个 JSON 序列化和反序列化库,它在 .NET Core 3.0 及更高版本中提供了内置支持。以下是 System.Text.Json 的用法详解:
JSON 序列化
JSON 序列化是将 .NET 对象转换为 JSON 字符串的过程。

using System;
using System.Text.Json;

public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
}

class Program
{
    static void Main()
    {
        var person = new Person
        {
            Name = "John",
            Age = 30
        };

        string jsonString = JsonSerializer.Serialize(person);
        Console.WriteLine(jsonString);
    }
}

上述代码中,我们定义了一个 Person 类,然后使用 JsonSerializer.Serialize 方法将 person 对象转换为 JSON 字符串。
反序列化
JSON 反序列化是将 JSON 字符串转换回 .NET 对象的过程。

using System;
using System.Text.Json;

public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
}

class Program
{
    static void Main()
    {
        string jsonString = "{\"Name\":\"John\",\"Age\":30}";

        Person person = JsonSerializer.Deserialize<Person>(jsonString);
        Console.WriteLine($"Name: {person.Name}, Age: {person.Age}");
    }
}


上述代码中,我们使用 JsonSerializer.Deserialize 方法将 JSON 字符串转换为 Person 对象。
高级用法
System.Text.Json 还提供了许多高级选项,以控制序列化和反序列化过程。您可以使用 JsonSerializerOptions 来自定义行为,如命名策略、空值处理、日期时间格式化等。

var options = new JsonSerializerOptions
{
    PropertyNamingPolicy = JsonNamingPolicy.CamelCase,
    WriteIndented = true, // 格式化输出
    DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingDefault,
    Converters = { new MyCustomConverter() }
};

string jsonString = JsonSerializer.Serialize(person, options);

自定义转换器

public class MyCustomConverter : JsonConverter<MyType>
{
    public override MyType Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
    {
        // 反序列化逻辑
    }

    public override void Write(Utf8JsonWriter writer, MyType value, JsonSerializerOptions options)
    {
        // 序列化逻辑
    }
}


然后,将自定义转换器添加到 JsonSerializerOptions 中,如前面的示例所示。

这些是 System.Text.Json 的一些基本用法和高级功能。它提供了一种轻量级且高性能的方式来处理 JSON 数据,适用于序列化和反序列化任务。在开发中,您可以根据需要使用它来与 JSON 数据进行交互。

标签:C#,Text,JSON,System,Json,序列化,public
From: https://www.cnblogs.com/johnyang/p/17787023.html

相关文章

  • 《最新出炉》系列初窥篇-Python+Playwright自动化测试-22-处理select下拉框-上篇
    1.简介在实际自动化测试过程中,我们也避免不了会遇到下拉框选择的测试,因此宏哥在这里直接分享和介绍一下,希望小伙伴或者童鞋们在以后工作中遇到可以有所帮助。今天,我们讲下playwright的下拉框怎么处理,在使用selenium定位的过程中,我们可以选择使用selenium的Select类定位操作选择框......
  • 给react native 添加transform translateY动画报错:Transform with key of "translateY
    初学reactnative,想实现一个相机扫描功能时,报错,报错描述如标题这是我的主要逻辑代码constfadeAnim=useRef(newAnimated.Value(0)).current;constmove=()=>{fadeAnim.setValue(0);Animated.timing(fadeAnim,{toValue:200,duration:20......
  • Curl error (60): SSL peer certificate or SSH remote key was not OK for
    执行命令:生成yum缓存dnfmakecache错误如下:RockyLinux9-BaseOS0.0B/s|0B00:04Errorsduringdownloadingmetadataforrepository'baseos':-Curlerror(60):SSLpeercertificateorSSHremotekeywasnotOKforhttps://mirrors.rockylinux.org/mirrorl......
  • 芯启源与KeyarchOS完成浪潮信息澎湃技术认证
    日前,芯启源DPU智能网卡与KeyarchOS完成并通过了浪潮信息澎湃技术认证,经双方联合测试,二者完全兼容,功能、性能和兼容性方面表现良好,运行稳定高效,满足用户需求。 浪潮信息澎湃技术认证是基于多元、创新的通用计算平台,与供应链及软件服务等生态合作伙伴共同构建的产品互兼容性认证......
  • P9771 HUSTFC 2023 排列排序问题 题解
    Question给出一个\(N\)个元素的排序\(a\),我们可以对排列进行一些操作将这个排列切割成若干个序列将其中一些序列翻转将这些序列连接起来得到一个新的排列需要让最后的排列有序Solution这个题的描述有点小问题理解应该是切一次,然后再反转合并,不可能会先合并再切再反转......
  • ASP.NET Core已有数据库,却新建项目
    ASP.NETCore已有数据库,却新建项目,只需要构造出相应的类,DbContext,然后直接add-migrationinit即可!!而不用执行update-database,执行后者会报错:ErrorNumber:2714,State:6,Class:16Thereisalreadyanobjectnamed'xxxxxx'inthedatabase.另外,注意主键到底是int,还是long,这......
  • vscode右键没有open with live server
    写原生界面时右击html查看效果看结果没有liveserver如:安装插件"liveserver"......
  • BOSHIDA DC电源模块的短期过载能力
    BOSHIDADC电源模块的短期过载能力DC电源模块是一种专门用来将交流电源转换为稳定直流电源的电子元件,适用于各种场合,如电子产品制造、通信、无线电、医疗等。在使用DC电源模块时,短期过载能力是考察其质量的重要指标之一。短期过载能力是指DC电源模块在短时间内承受超负荷电流的......
  • [Vue]computed和watch的区别
    computed和watch之间的区别: 1.computed能完成的功能,watch都可以完成。 2.watch能完成的功能,computed不一定能完成,例如:watch可以进行异步操作。两个重要的小原则: 1.所有被Vue管理的函数,最好写成普通函数,这样this的指向才是vm或组件实例对象。 2.所有不......
  • 自签名证书--x509: certificate signed by unknown authority
    问题描述: 后端日志报错:x509:certificatesignedbyunknownauthority登陆pod测试: 原因:因为自签名证书,不能识别到根证书解决:1.临时办法把根证书复制到podkubectlcp **.crt/usr/local/share/ca-certificates/kubectlexec-it** -- update-ca-certificates......