首页 > 解决方案 > 打字稿为什么我的 Get 请求以骆驼案的形式出现?

问题描述

我正在从我的应用程序向应用程序发出GET请求。返回的对象是骆驼案,我想留在帕斯卡案。Angular 8 and typescriptASP.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 对象?我应该改变处理日期的方式吗?

标签: c#angulartypescript

解决方案


您的 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(); 

推荐阅读