c# - 打字稿为什么我的 Get 请求以骆驼案的形式出现?
问题描述
我正在从我的应用程序向应用程序发出GET
请求。返回的对象是骆驼案,我想留在帕斯卡案。Angular 8 and typescript
ASP.NET CORE 3 web API
在 TypeScript 中看起来像这样
this.httpClient.get<Task>("Task/GetTask/" + task.id).subscribe((ganttTask: Task) => {
console.log(ganttTask);
});
这是TS中的任务对象
export class Task{
public TaskID: string;
public SubprojectID: string;
public Description: string;
public Color: string;
public SortOrder: number;
public WbsColor: string;
public TextColor: string;
public StartDate: Date;
public DurationHours: Number;
public EndDate: Date;
public PlannedStartDate: Date;
public PlannedEndDate: Date;
constructor(){
//default colors
this.Color = '#ABD8E6';
this.TextColor = '#000000';
this.WbsColor = '#000000';
}
}
这是 C# 中的任务对象
public class Task
{
public Task() {
}
[Key]
public Guid TaskID {get;set;}
public Guid SubprojectID { get; set; }
public DateTimeOffset StartDate { get; set; }
public int DurationHours { get; set; }
public DateTimeOffset EndDate { get; set; }
public DateTimeOffset? PlannedStartDate { get; set; }
public DateTimeOffset? PlannedEndDate { get; set; }
public string Description { get; set; }
public string Color { get; set; }
public string TextColor { get; set; }
public string WbsColor { get; set; }
public int SortOrder { get; set; }
}
这是返回数据的示例
{
color: "#ed0732"
description: "test 4"
durationHours: 4
endDate: "2019-11-04T22:00:00+00:00"
plannedEndDate: null
plannedStartDate: null
sortOrder: 0
startDate: "2019-11-04T12:00:00+00:00"
subprojectID: "c9335b34-8b2d-42de-8cad-ba0ca1a79a5d"
taskID: "e9cef6f6-82a8-4f9c-9fda-692f2a84cd24"
textColor: "#f7dcf7"
wbsColor: "#000000"
}
这只发生在这个实体上,我猜这是因为日期作为字符串返回。该Task
对象将增长到大约 100 个属性。除非必须,否则我宁愿不必转换此对象或具有这么多属性的任何其他对象。有没有办法将返回的类型映射到 Task 对象?我应该改变处理日期的方式吗?
解决方案
您的 jsonSerializer 将转换为您需要在 C# 中配置 jsonSerialization 的驼峰式大小写。
var formatters = GlobalConfiguration.Configuration.Formatters;
var jsonFormatter = formatters.JsonFormatter;
var settings = jsonFormatter.SerializerSettings;
//Set to use which ever resolver you need e.g pascal resolver;
settings.ContractResolver = new DefaultContractResolver();
推荐阅读
- python - Error "Cannot set destination table in jobs with DML statements" even though I'm not setting the destination table
- asp.net-core-mvc - Blazor 和 ASP.NET Core 3.0 MVC
- python - Python Threads - 动态更改并行线程的数量
- alfresco - How to override a value from slingshot.properties in Alfresco?
- mysql - 通过 Spring Boot 将图像插入 MySQL 数据库
- java - How erasure of generics "replace" multiple bounds
- email - 在 Netsuite 中,如何在他们的案例结束时自动向特定客户发送电子邮件?
- angular7 - Angular 7:修改此自定义验证器,使其正确检查大于 1 的值
- c# - Errors in IF statement and I don't know why (C# Visual Studio)
- odata - 有谁知道为什么 Sage 300 通过 http 调用返回无效负载