在 C# 中将 JSON 字符串转换为对象

本文关键字:转换 对象 字符串 JSON 中将 | 更新日期: 2023-09-26 23:08:18

在这里,您将学习如何在 C# 中将 JSON 字符串解析为类对象。

JSON被称为Javascript对象表示法,用于存储和传输数据。在 C# 应用程序中,通常需要将 JSON 字符串数据转换为类对象。

例如,假设您有以下 JSON 字符串:

 "{"DeptId": 101, "DepartmentName": "IT"}"; 

现在,要将上述字符串转换为类对象,字符串中数据属性的名称必须与类属性的名称匹配。要转换上述 JSON 字符串,类应如下所示:

public class Department{
    public int DeptId { get; set; }
    public string DepartmentName { get; set; }
}

请注意,上述类的上述属性与 JSON 字符串的属性匹配。因此,名称的任何更改都会导致异常。

.NET Core 3.0 及更高版本在 System.Text.Json 命名空间中包含内置类JsonSerializer,该命名空间提供从 JSON 序列化和反序列化的功能。

.NET 4.x 框架不提供任何将对象转换为 JSON 的内置JsonSerializer类。 必须在项目中安装 NuGet 包Microsoft.Extensions.Configuration.Json,以包含项目中可用于将对象转换为 JSON 的System.Text.Json.JsonSerializer,反之亦然。

反序列化是将字符串解析为特定类型的对象的过程。JsonSerializer.Deserialize() 方法将 JSON 字符串转换为泛型类型参数指定的类型的对象。

语法:

public static TValue? Deserialize<TValue> (string json, 
                        JsonSerializerOptions? options = default);

以下示例演示如何使用 JsonSerializer.Deserialize () 方法分析 JSON 字符串:

string jsonData = "{"DeptId": 101, "DepartmentName": "IT"}";
Department deptObj = JsonSerializer.Deserialize<Department>(jsonData);
Console.WriteLine("Department Id: {0}", deptObj.DeptId);
Console.WriteLine("Department Name: {0}", deptObj.DepartmentName);

输出:

Department Id is: 101
Department Name is: IT

将 JSON 数组字符串转换为列表(Convert JSON Array String to List)

很多时候,JSON 字符串包含一个用于存储多个数据的数组。这可以转换为 C# 中的数组或对象列表。 以下示例演示如何将 JSON 数组解析为C# list collection

string jsonArray = "[{"DeptId": 101,"DepartmentName":"IT" }, {"DeptId": 102,"DepartmentName":"Accounts" }]";
var deptList = JsonSerializer.Deserialize<IList<Department>>(jsonArray);
foreach(var dept in deptList)
{
    Console.WriteLine("Department Id is: {0}", dept.DeptId);
    Console.WriteLine("Department Name is: {0}", dept.DepartmentName);
}

输出:

Department Id is: 101
Department Name is: IT
Department Id is: 102
Department Name is: Accounts

在 AJAX 应用程序中将 JSON 字符串转换为对象(Convert JSON String to Object in AJAX Application)

使用 JavaScriptSerializer 类为启用 AJAX 的 ASP.NET Web 应用程序提供序列化和反序列化功能。 JavaScriptSerializer.Deserialize() 方法将指定的 JSON 字符串转换为指定的泛型参数对象的类型。

以下示例演示如何使用JavaScriptSerializer.Deserialize()方法分析 JSON 字符串。

using System;
using System.Collections.Generic;
using System.Web.UI;
using System.Web.Script.Serialization;
namespace MyWebApplication
{
    public partial class _Default : Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            string jsonDept = @"{'DeptId': '101', 'DepartmentName': 'IT'}";
            var serializer = new JavaScriptSerializer();
            Department deptObj = new serializer.Deserialize<Department>(jsonDept);
        }
    }
    public class Department
    {
        public int DeptId { get; set; }
        public string DepartmentName { get; set; }
    }
}

了解有关System.Web.Script.Serialization.JavaScriptSerializer的更多信息。

因此,使用 JsonSerializer.Deserialize() 方法将 JSON 字符串转换为 C# 中的类对象。


本文内容总结: