API Json对带有大写字母属性首字母大写的C#对象的响应

问题描述 投票:0回答:1

我制作了一个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#标准)。现在,我正在使用一个可怕的'helper'类,该类具有小写的属性来进行翻译。

任何想法如何处理,并以大写字母首字母直接发送给Json?

编辑

我使用ASP.NET Web API CoreNewtonsoft.Json

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

c# json entity-framework asp.net-core asp.net-apicontroller
1个回答
3
投票

默认情况下,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();
    });
© www.soinside.com 2019 - 2024. All rights reserved.