.NET 将 JSON 反序列化为多种类型 [重复]

js

1个回答

写回答

AhzQr

2025-07-09 16:55

+ 关注

JS
JS

.NET:将 JSON 反序列化为多种类型

在开发过程中,经常会遇到需要将 JSON 数据反序列化为不同类型的情况。而在 .NET 中,我们可以通过使用 Newtonsoft.JSon 库来轻松地实现这个功能。本文将介绍如何使用 .NET 将 JSON 数据反序列化为多种类型,并提供实际案例代码。

JSON 反序列化简介

首先,让我们来了解一下什么是 JSON 反序列化。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,常用于前后端数据交互。而反序列化指的是将 JSON 数据转换为对象或数据结构的过程。

在 .NET 中,我们可以使用 Newtonsoft.JSon 库提供的 JSonConvert 类来实现 JSON 的反序列化。这个库是 .NET 开发中最常用的 JSON 序列化和反序列化库,易于使用且功能强大。

反序列化为基本类型

首先,我们来看一下如何将 JSON 数据反序列化为基本类型。假设我们有以下 JSON 字符串:

JSon

{

"name": "John",

"age": 30,

"isStudent": true

}

我们可以定义一个对应的类来表示这个 JSON 对象:

csharp

public class Person

{

public string Name { get; set; }

public int Age { get; set; }

public bool IsStudent { get; set; }

}

然后,我们可以使用 JSonConvert.DeserializeObject 方法将 JSON 字符串反序列化为 Person 对象:

csharp

string JSon = "{\"name\":\"John\",\"age\":30,\"isStudent\":true}";

Person person = JSonConvert.DeserializeObject<Person>(JSon);

现在,我们可以通过访问 Person 对象的属性来获取相应的值:

csharp

Console.WriteLine($"Name: {person.Name}");

Console.WriteLine($"Age: {person.Age}");

Console.WriteLine($"Is Student: {person.IsStudent}");

这样,我们就成功地将 JSON 数据反序列化为基本类型。

反序列化为复杂类型

除了基本类型,我们还可以将 JSON 数据反序列化为更复杂的类型,例如包含嵌套对象或数组的类。让我们来看一个例子。

假设我们有以下 JSON 字符串,表示一辆汽车的信息:

JSon

{

"brand": "Ford",

"model": "Mustang",

"year": 2020,

"owner": {

"name": "John",

"age": 30

},

"features": ["GPS", "Bluetooth", "Cruise Control"]

}

我们可以定义一个对应的类来表示这个 JSON 对象:

csharp

public class Car

{

public string Brand { get; set; }

public string Model { get; set; }

public int Year { get; set; }

public Person Owner { get; set; }

public List<string> Features { get; set; }

}

然后,我们可以使用 JSonConvert.DeserializeObject 方法将 JSON 字符串反序列化为 Car 对象:

csharp

string JSon = "{\"brand\":\"Ford\",\"model\":\"Mustang\",\"year\":2020,\"owner\":{\"name\":\"John\",\"age\":30},\"features\":[\"GPS\",\"Bluetooth\",\"Cruise Control\"]}";

Car car = JSonConvert.DeserializeObject<Car>(JSon);

现在,我们可以通过访问 Car 对象的属性来获取相应的值,甚至可以进一步访问嵌套对象的属性:

csharp

Console.WriteLine($"Brand: {car.Brand}");

Console.WriteLine($"Model: {car.Model}");

Console.WriteLine($"Year: {car.Year}");

Console.WriteLine($"Owner: {car.Owner.Name}, Age: {car.Owner.Age}");

Console.WriteLine("Features:");

foreach (string feature in car.Features)

{

Console.WriteLine(feature);

}

这样,我们就成功地将 JSON 数据反序列化为复杂类型。

案例代码

下面是一个完整的示例代码,演示了如何使用 .NET 将 JSON 数据反序列化为多种类型:

csharp

using System;

using Newtonsoft.JSon;

using System.Collections.Generic;

public class Person

{

public string Name { get; set; }

public int Age { get; set; }

public bool IsStudent { get; set; }

}

public class Car

{

public string Brand { get; set; }

public string Model { get; set; }

public int Year { get; set; }

public Person Owner { get; set; }

public List<string> Features { get; set; }

}

public class Program

{

public static void MAIn(string[] args)

{

// 反序列化为基本类型

string JSon1 = "{\"name\":\"John\",\"age\":30,\"isStudent\":true}";

Person person = JSonConvert.DeserializeObject<Person>(JSon1);

Console.WriteLine($"Name: {person.Name}");

Console.WriteLine($"Age: {person.Age}");

Console.WriteLine($"Is Student: {person.IsStudent}");

// 反序列化为复杂类型

string JSon2 = "{\"brand\":\"Ford\",\"model\":\"Mustang\",\"year\":2020,\"owner\":{\"name\":\"John\",\"age\":30},\"features\":[\"GPS\",\"Bluetooth\",\"Cruise Control\"]}";

Car car = JSonConvert.DeserializeObject<Car>(JSon2);

Console.WriteLine($"Brand: {car.Brand}");

Console.WriteLine($"Model: {car.Model}");

Console.WriteLine($"Year: {car.Year}");

Console.WriteLine($"Owner: {car.Owner.Name}, Age: {car.Owner.Age}");

Console.WriteLine("Features:");

foreach (string feature in car.Features)

{

Console.WriteLine(feature);

}

}

}

在本文中,我们介绍了如何使用 .NET 将 JSON 数据反序列化为多种类型。我们首先了解了 JSON 反序列化的概念,然后通过实际案例演示了如何将 JSON 数据反序列化为基本类型和复杂类型。通过使用 Newtonsoft.JSon 库,我们可以轻松地实现 JSON 的反序列化功能,使数据交互更加便捷高效。希望本文能帮助您更好地理解和应用 JSON 反序列化的相关知识。

举报有用(4)分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号