API Json 对具有大写属性首字母的 C# 对象的响应
API Json response to C# Object with capital case properties first letter
我做了一个 API,在 Entity Framework 详细说明之后,我发送了一个在 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 的首字母小写,但我想用完全相同的 class 反序列化它,但它不能,因为 class 具有大写形式的属性(C# 标准)。
现在我正在使用一个可怕的 'helper' class 具有小写属性来翻译它。
知道如何处理这个问题并直接发送首字母大写的 Json 吗?
编辑
我使用 ASP.NET web API Core 和 Newtonsoft.Json
在 Xamarin 应用中我使用 System.Text.Json
默认情况下,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 核心 2.0:
services
.AddMvc()
.AddJsonOptions(options =>
{
// don't serialize with CamelCase (see https://github.com/aspnet/Announcements/issues/194)
jsonSettings.ContractResolver = new DefaultContractResolver();
});
您必须更改 json 序列化选项的默认 属性 命名策略。
默认设置为驼峰式大小写,但如果您将其设置为 null
,属性 名称将保持不变(或保持您在 class 中所写的名称)。
只需将此添加到您的 Startup.cs
:
services.AddControllers()
.AddJsonOptions(options =>
{
options.JsonSerializerOptions.PropertyNamingPolicy = null;
});
我做了一个 API,在 Entity Framework 详细说明之后,我发送了一个在 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 的首字母小写,但我想用完全相同的 class 反序列化它,但它不能,因为 class 具有大写形式的属性(C# 标准)。 现在我正在使用一个可怕的 'helper' class 具有小写属性来翻译它。
知道如何处理这个问题并直接发送首字母大写的 Json 吗?
编辑
我使用 ASP.NET web API Core 和 Newtonsoft.Json
在 Xamarin 应用中我使用 System.Text.Json
默认情况下,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 核心 2.0:
services
.AddMvc()
.AddJsonOptions(options =>
{
// don't serialize with CamelCase (see https://github.com/aspnet/Announcements/issues/194)
jsonSettings.ContractResolver = new DefaultContractResolver();
});
您必须更改 json 序列化选项的默认 属性 命名策略。
默认设置为驼峰式大小写,但如果您将其设置为 null
,属性 名称将保持不变(或保持您在 class 中所写的名称)。
只需将此添加到您的 Startup.cs
:
services.AddControllers()
.AddJsonOptions(options =>
{
options.JsonSerializerOptions.PropertyNamingPolicy = null;
});