【问题标题】:API Json response to C# Object with capital case properties first letterAPI Json 对具有大写属性首字母的 C# 对象的响应
【发布时间】:2020-04-04 12:08:23
【问题描述】:

我制作了一个 API,在详细说明实体框架之后,我发送一个用 Json 序列化的对象。

我的对象:

public class Package
{
    public int Items { get; set; }
    public string Code { get; set; }
    public string Description { get; set; }
    public double? Weight { get; set; }
    public string Size { get; set; }
    public string PackageType { get; set; }
}

问题在收到它(Xamarin 应用程序)后 Json 的第一个字母小写,但我想在完全相同的类中反序列化它,但它不能因为该类具有大写的属性(C# 标准)。 现在我正在使用一个可怕的“助手”类,它具有小写的属性来翻译它。

知道如何处理这个问题并直接用大写首字母发送 Json 吗?

编辑

我使用 ASP.NET Web API CoreNewtonsoft.Json

在 Xamarin 应用中,我使用 System.Text.Json

【问题讨论】:

  • 你用的是asp.net web api core吗?
  • 您使用的是 Newtonsoft.Json 还是 System.Text.Json?
  • 对不起,我没有指定它...我使用 asp.net web api 核心,我在核心 API 中使用 Newtonsoft.Json,在 Xamarin 应用程序中使用 System.Text.Json

标签: c# json entity-framework asp.net-core asp.net-apicontroller


【解决方案1】:

您必须更改 json 序列化选项的默认属性命名策略。

默认情况下,它设置为驼峰式大小写,但如果您将其设置为 null,属性名称将保持不变(或保持您在课堂上写的那样)。

只需将此添加到您的Startup.cs

services.AddControllers()
.AddJsonOptions(options =>
{
   options.JsonSerializerOptions.PropertyNamingPolicy = null;
});

【讨论】:

  • 为我工作。谢谢
【解决方案2】:

默认情况下,ASP.NET Core 以驼峰形式对所有 JSON 属性名称进行编码,以匹配 JSON 约定(请参阅announcement of the change on GitHub)。

如果要保持 C# 约定,则需要更改默认的 JSON 序列化程序。

在您的Startup.cs 中,像这样配置 MVC 部分(ASP.Net Core 3.0):

services
    .AddMvc()
    .AddNewtonsoftJson(options =>
    {
        // don't serialize with CamelCase (see https://github.com/aspnet/Announcements/issues/194)
        jsonSettings.ContractResolver = new JsonContractResolver();
    });

对于 ASP.NET Core 2.0:

services
    .AddMvc()
    .AddJsonOptions(options =>
    {
        // don't serialize with CamelCase (see https://github.com/aspnet/Announcements/issues/194)
        jsonSettings.ContractResolver = new DefaultContractResolver();
    });

【讨论】:

    猜你喜欢
    • 2018-07-03
    • 2022-01-17
    • 2019-10-02
    • 2014-04-20
    • 1970-01-01
    • 2016-08-21
    • 1970-01-01
    • 2021-12-08
    • 1970-01-01
    相关资源
    最近更新 更多