C# 中的 JSON 处理:面向开发人员的综合指南

作者:微信公众号:【架构师老卢】
2-19 18:38
73

概述:在应用程序开发中,处理数据操作是一项核心任务。通常,此数据以 JSON(JavaScript 对象表示法)的形式出现。了解如何在所选编程语言(如 C#)中导航 JSON 至关重要。如果您曾经思考过如何将 JSON 对象转换为 C# 类,那么您很幸运!本文深入探讨了在 C# 框架中管理 JSON 的实用性和复杂性。我们将探讨从将 JSON 字符串转换为 C# 类对象到访问和修改 C# 项目中的 appsettings.json 文件的所有内容。介绍C# 中的 JSON JSON 和 C# 在编码世界中有着特殊的联系。他们不仅是一个强大的二人组,而且了解他们的内部运作会释放出一个充满可能性的世界,

在应用程序开发中,处理数据操作是一项核心任务。通常,此数据以 JSON(JavaScript 对象表示法)的形式出现。了解如何在所选编程语言(如 C#)中导航 JSON 至关重要。如果您曾经思考过如何将 JSON 对象转换为 C# 类,那么您很幸运!

本文深入探讨了在 C# 框架中管理 JSON 的实用性和复杂性。我们将探讨从将 JSON 字符串转换为 C# 类对象到访问和修改 C# 项目中的 appsettings.json 文件的所有内容。

介绍

C# 中的 JSON JSON 和 C# 在编码世界中有着特殊的联系。他们不仅是一个强大的二人组,而且了解他们的内部运作会释放出一个充满可能性的世界,从而简化您的编码工作。让我们开始吧!

什么是 JSON 及其在 C# 中的意义?

JSON 是 JavaScript 对象表示法的缩写,是一种轻量级的数据交换格式,易于读取和写入。由于其独立于语言的性质,它是现代应用程序中用于在服务器和 Web 应用程序之间存储和通信数据的主要工具。

其人类可读的格式促进了 C# 中服务器和客户端之间的无缝通信,从而实现了直接的数据存储和数据库检索,以及其他任务。

下面是一个简单的 JSON 示例,可帮助我们入门:

{  
    "name":"John Doe",  
    "age":30,  
    "car":null  
}

它简单易读,不是吗?

了解 C# 中的 JSON 类 但是 C# 中的 JSON 类到底是什么,你为什么要感兴趣呢?

C# 中的 JSON 类的核心是表示相关 JSON 结构的类表示形式。它指示 JSON 对象如何直接映射到 C# 类,从而更方便地访问和操作数据。然后,C# 可以利用这些类将 JSON 对象反序列化为可用格式。

把它想象成一个神奇的转变!从非类型化的 JSON 对象移动到强类型的 C# 对象。很整洁,对吧?

JSON 和 C# 之间的关系 还记得我们刚才讨论的那个神奇的转变吗?

嗯,这本质上是 JSON 和 C# 之间的关系。一种是数据格式,另一种是编程语言。当 C# 遇到 JSON 时,它们会和谐地协作,从而促进轻松、动态的数据操作。

实现这种和谐状态确实需要一些努力。但不要害怕,这正是本指南所要帮助的!

在 C 语言中使用 JSON#

现在我们已经了解了 JSON 的重要性,让我们来探讨一下如何在 C# 中使用它。让我们揭开这个谜团!

将 JSON 转换为 C# 类

当您在应用程序中遇到 JSON 数据时,初始步骤通常涉及解释并将其转换为 C# 类。但是,我们如何解锁这个信息宝库呢?

使用 Newtonsoft.Json 库,我们可以毫不费力地将 JSON 字符串反序列化为相应的 C# 对象。

看一下这个例子:

using Newtonsoft.Json;  
  
public class Person  
{  
    public string Name { get; set; }  
    public int Age { get; set; }  
    public string Car { get; set; }  
}  
// Assume jsonString contains a JSON object similar to the one in our initial example  
Person person = JsonConvert.DeserializeObject<Person>(jsonString);

只需几行代码,我们就实例化了 Person 类,其中填充了 JSON 字符串中的数据。谁知道它可以如此简单?

从 JSON 创建 C# 类

曾经盯着一个 JSON 对象,想知道,“我怎样才能把它变成一个 C# 类?

你并不孤单!通过从 JSON 生成 C# 类,我们可以享受强大的类型和智能编码支持(如 IntelliSense)的好处。另外,这非常容易做到!

以下是实现此目的的快速方法:

public class Vehicle  
{  
    public string Type { get; set; }  
    public string Model { get; set; }  
    public string Color { get; set; }  
}  
  
Vehicle vehicle = JsonConvert.DeserializeObject<Vehicle>(jsonVehicleString);

现在,我们有了一个新的 Vehicle 类及其实例车辆。您可以随心所欲地操纵和利用此车辆对象的力量。

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

但是,如果你的 JSON 字符串不是那么简单呢?也许它嵌套得很深,或者看起来难以辨认。如何将其转换为 C# 类对象?

关键在于了解 JSON 结构并将其正确映射到 C# 类。如果 JSON 包含多个级别,只需在 C# 代码中创建嵌套类即可。

举个例子,你说?在这里:

public class Owner   
{  
    public string Name { get; set; }  
    public Vehicle Car { get; set; }  
  
    public Owner()  
    {  
        Car = new Vehicle();  
    }  
}  


Owner owner = JsonConvert.DeserializeObject<Owner>(jsonOwnerString);

现在我们有一个 Owner 对象,每个所有者都有一个 Vehicle 对象作为他们的 Car。一个经过深思熟虑的类结构等于一个可靠的应用程序!

将 JSON 转换为 C# 类

虽然将 JSON 转换为 C# 类似乎毫不费力,但它也可能是一个非常详细的过程,具体取决于 JSON 的复杂性。因此,让我们讨论一下无论情况如何,您都可以轻松度过难关。

将 JSON 转换为 C# 类的基本步骤

将 JSON 转换为 C# 类围绕匹配属性展开。确保类属性与 JSON 对象中的名称一致。

以下是一般步骤:

  1. 确定 JSON 的结构。
  2. 创建相应的 C# 类。
  3. 将 JSON 字符串反序列化为新类。
  4. 利用新对象来满足您的心愿!

下面是一些代码来说明这些步骤:

public class School  
{  
    public string Name { get; set; }  
    public int NumberOfStudents { get; set; }  
}  
  
School school = JsonConvert.DeserializeObject<School>(jsonSchoolString);

瞧!您已经将 JSON 对象转换为 C# 类,或者我应该说是 School 类。

将 JSON 转换为 C# 类的高级技术 JSON 对象并不总是那么简单。有时,他们就像不守规矩的孩子,有嵌套的结构和列表。但是,熟练的 C# 开发人员至少不会被淘汰。

如果 JSON 数据包含数组、嵌套对象或其他复杂结构,请创建镜像 JSON 结构的 C# 类。例如:

public class Student  
{  
    public string Name { get; set; }  
    public int Age { get; set; }  
}  
  
public class School  
{  
    public string Name { get; set; }  
    public int Population { get; set; }  
    public List<Student> Students { get; set; }  
}  
  
// school data deserilization and cast it to the School class  
School school = JsonConvert.DeserializeObject<School>(jsonSchoolString);

在这里,我们有一个更复杂的 JSON 结构,但凭借我们深思熟虑的类结构,我们征服了!

处理复杂场景

将 JSON 转换为 C# 类 将 JSON 转换为 C# 类时可能会出现问题,尤其是对于复杂的 JSON 结构。

以下是一些建议:

  1. 始终确保属性名称与 JSON 对象的名称匹配。
  2. 请注意区分大小写的问题。JSON 属性通常是驼峰大小写,而 C# 属性是 Pascal 大小写。您可以使用 JsonProperty 来克服这个问题。
  3. 利用 Newtonsoft.Json 库。它让生活变得轻松多了!
  4. 对于布尔数据类型,C# 使用 bool,而 JSON 使用 true 或 false。永远记住将它们等同起来。
  5. 不要害怕复杂的场景——它们是提高技能的机会!

从 JSON 创建 C# 类

好吧,让我们稍微换个档位。现在,让我们专注于从 JSON 对象创建 C# 类。这个过程很简单,无痛,别忘了,有趣!

从 JSON 生成 C# 类

您可以按照上述步骤从任何 JSON 对象手动创建 C# 类。但是,您也可以使用 json2sharp 等在线工具从 JSON 对象生成 C# 类。只需粘贴您的 JSON 数据,瞧,您立即获得 C# 类。

下面是用于从 JSON 创建类的紧凑代码片段:

public class Student  
{  
    public string Name { get; set; }  
    public int Age { get; set; }  
    public List<string> Subjects { get; set; }  
    public string Grade { get; set; }  
}  
  
Student student = JsonConvert.DeserializeObject<Student>(jsonStudentString);

您的 JSON 到 C# 类的创建变得更加容易,不是吗?

要避免的陷阱

从 JSON 创建 C# 类时,就像在任何其他编码任务中一样,我们必须注意从 JSON 创建 C# 类时的潜在陷阱。

注意:

  1. JSON 和 C# 类之间的属性名称差异
  2. 与数据类型不一致
  3. 难以处理嵌套的 JSON 对象或数组

一点点的细心总会让你领先数英里!

API 在从 JSON 创建 C# 类中的作用 如果我们不讨论 API 在从 JSON 创建 C# 类时所扮演的角色,那将是我们的失职。API 通常以 JSON 格式返回数据。通过创建镜像 API 响应的类,可以将 JSON 反序列化为 C# 类,并有效地处理数据。

看,API 和 JSON 就像饼干和牛奶一样相辅相成!

在类中访问和修改appsettings.json C#

appsettings.json 文件用作 ASP.NET Core 应用程序中的配置文件。这是存储连接字符串、日志记录设置等设置的位置。让我们看看如何在类文件中访问和修改它。

在类中访问appsettings.json C#:

我们借助内置的 IConfiguration 接口来处理这个问题。只需少量的依赖注入,IConfiguration 就可以访问我们的appsettings.json及其所有存储值。

下面是如何从类中的appsettings.json中检索值的示例:

public class AppSettingsService  
{  
    private IConfiguration _configuration;  
  
    public AppSettingsService(IConfiguration configuration)  
    {  
        _configuration = configuration;  
    }  
  
    public string GetSetting(string key)  
    {  
        return _configuration.GetValue<string>(key);  
    }  
}

此 AppSettingsService 类通过 IConfiguration 访问appsettings.json。这是一块鹅卵石!

修改方式

appsettings.json类中的 C# 但也许你想增加趣味并修改appsettings.json中的设置。

明智地选择你的战斗!通常不建议以编程方式修改原始文件,因为它会给应用程序稳定性带来风险。

相反,请考虑其他选项,例如:

  1. 使用数据库存储动态设置
  2. 为需要在运行时更改的设置创建单独的 json 文件

永远记住,能力越大,责任越大!

将 C# 类转换为 JSON 架构

就像我们可以将 JSON 字符串转换为 C# 类对象一样,我们可以做相反的事情!下面介绍如何将 C# 类转换为 JSON 架构。

如何将 C# 类转换为 JSON 架构:

完整的流程和见解 简而言之,JSON 架构定义了 JSON 数据格式的结构。它可以使用 Newtonsoft.Json.Schema 库从 C# 类派生。

下面是一个示例:

using Newtonsoft.Json.Schema;  
using Newtonsoft.Json.Schema.Generation;  
  
JSchemaGenerator generator = new JSchemaGenerator();  
JSchema schema = generator.Generate(typeof(Student));  
  
Console.WriteLine(schema.ToString());

这将输出基于 Student 类的 JSON 架构。我们只是翻转了剧本!

结论

C# 中的 JSON 类 对于负责在其应用程序中处理 JSON 的开发人员,本指南提供了使用 JSON 和 C# 的全面知识。有了这些知识,你就可以自信地在课堂上访问appsettings.json,了解如何从 JSON 创建 C# 类,并知道如何在 C# 中将 JSON 字符串转换为类对象。

相关留言评论
昵称:
邮箱:
阅读排行