在 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: 101Department 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: 101Department 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# 中的类对象。
本文内容总结: