为什么JSONResult将驼峰大小写属性名称转换为小写?

时间:2018-09-21 22:36:15

标签: json angular typescript

项目概述

我正在一个基于以下项目:

1-角6

2- Aspnet Core 2.1

场景

我正在使用下面的角度代码调用获取请求

let reqHeader = new HttpHeaders({ 'Content-Type': 'application/json' });
  this.http.get(this._URL).subscribe(
    (data => {
      this._engineersList = data[0];
      this._shiftList = data[1];
      console.log(data[0])
    }), error => this.error
  );

class Engineers {
    public ID: number;
    public Name: string;
}

class Shifts {
    public ID: number;
    public EmployeeID: number;
    public EmployeeName: string;
    public ShiftName: string;
    public ShiftTime: string;
}

因为我的属性名称均为驼峰式。显然,我将其绑定到我的HTML中,如下所示:

<tbody>
    <tr *ngFor="let engineer of _engineersList">
      <td>
        {{engineer.Id}}
      </td>
      <td>
        {{engineer.Name}}
      </td>
    </tr>
  </tbody>

我将获得以下输出(无数据绑定):

enter image description here

但是当我将我的Camel大小写属性转换为小写时,例如:

<tbody>
    <tr *ngFor="let engineer of _engineersList">
      <td>
        {{engineer.id}}
      </td>
      <td>
        {{engineer.name}}
      </td>
    </tr>
  </tbody>

enter image description here

发现

当我在浏览器控制台中检查GET请求的返回结果时,发现我的可观察到的返回属性为小写。

enter image description here

此外,我在服务器端对此进行了验证,但未发现此类问题。服务器在驼峰情况下正确地向我返回了正确的数据。

enter image description here

我要说的是为什么我的JSON结果以小写字母显示并绑定我的属性名称?如您在这篇文章的顶部所看到的,我已经创建了一个模型类,并且它们的属性在Camel Case中,它们应该像在HTML上一样进行绑定,但是不起作用。请帮我解决我在代码中做错的事情。希望我简短地解释我的问题。

2 个答案:

答案 0 :(得分:0)

您是否尝试过使用中间件属性? 您可能要在这里强迫骆驼或Pascal皮套?

protected void Application_Start()
{
    HttpConfiguration config = GlobalConfiguration.Configuration;
    config.Formatters.JsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
    config.Formatters.JsonFormatter.UseDataContractJsonSerializer = false;
}

答案 1 :(得分:0)

在ASP.NET Core中,您可以将其添加到Startup.cs

public void ConfigureServices(IServiceCollection services)
{

    services.AddMvc()
        .AddJsonOptions(options => options.SerializerSettings.ContractResolver = new DefaultContractResolver());
}