📌  相关文章
📜  从 .net 核心控制器检索后,json 属性变小 - Javascript (1)

📅  最后修改于: 2023-12-03 15:36:12.797000             🧑  作者: Mango

从 .NET Core 控制器检索后,JSON 属性变小 - JavaScript

在使用 .NET Core 控制器将数据从服务发送到客户端时,我们经常需要将数据从 C# 类型转换为 JSON 格式。在转换过程中,我们希望所有属性的名称保持原样,但在某些情况下会发现 JSON 属性名称会变小写。这种情况通常出现在将 JSON 传递给 JavaScript 应用程序时。在本篇文章中,我们将讨论如何解决这个问题。

解决方法

要解决 JSON 属性名称变小写的问题,我们需要使用一个名为 JsonPropertyName 的属性来标记我们的 C# 类型的属性。这个属性指定序列化后的属性名称,我们将在其中指定 JSON 属性名称以匹配我们期望的 JavaScript 应用程序要求的属性名称。接下来是一个例子:

public class SampleModel
{
    [JsonPropertyName("FirstName")]
    public string FirstName { get; set; }

    [JsonPropertyName("LastName")]
    public string LastName { get; set; }
}

在这个例子中,我们使用 JsonPropertyName 属性指定了 FirstNameLastName 属性的 JSON 属性名称。这将确保在序列化过程中保留属性名称,并避免它们被更改为小写。

示例

接下来,我们将看一个完整的示例。假设我们有以下 C# 类型:

public class User
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
}

我们想要将它序列化为 JSON 并将其发送到前端 JavaScript 应用程序。为了确保序列化是正确的,我们需要确保 JSON 属性名称与 C# 类型属性名称相同。为此,我们需要使用 JsonPropertyName 属性。下面是一个示例:

using System.Text.Json.Serialization;

public class User
{
    [JsonPropertyName("FirstName")]
    public string FirstName { get; set; }

    [JsonPropertyName("LastName")]
    public string LastName { get; set; }
}

在上面的示例中,我们添加了 JsonPropertyName 属性来指定 JSON 属性名称。这将确保属性名称保持不变,并避免在序列化过程中将它们更改为小写。

接下来,我们需要将 User 类型序列化为 JSON 格式。为此,我们可以使用 System.Text.Json 命名空间中的 JsonSerializer 对象。下面是一个示例:

using System.Text.Json;

var user = new User { FirstName = "John", LastName = "Doe" };
var json = JsonSerializer.Serialize(user);

在上面的示例中,我们使用 JsonSerializer.Serialize 方法将 User 对象序列化为 JSON 格式。在序列化期间,.NET Core 将使用 JsonPropertyName 属性指定的名称将属性名称转换为 JSON 属性名称。最终的 JSON 将看起来像这样:

{
    "FirstName": "John",
    "LastName": "Doe"
}

由于我们使用了 JsonPropertyName 属性,JSON 属性名称与 C# 类型属性名称相同。

结论

JSON 属性名称变小写是一个常见的问题,在从 .NET Core 控制器发送数据到前端 JavaScript 应用程序时经常出现。为了避免这个问题,我们可以使用 JsonPropertyName 属性标记我们的 C# 类型属性,指定 JSON 属性名称以保持属性名称不变。