【问题标题】:Why JSONResult converts Camel case property names to Lowercase?为什么 JSONResult 将 Camel 大小写属性名称转换为小写?
【发布时间】:2019-02-26 08:08:06
【问题描述】:

项目概述

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

1- 角度 6

2- Aspnet Core 2.1

场景

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

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>

我得到低于输出(无数据绑定):

但是当我将我的骆驼大小写属性转换为小写时:

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

调查结果

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

另外,我在服务器端验证了这一点,但没有发现这样的问题。服务器在 Camel 案例中正确返回正确的数据。

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

【问题讨论】:

标签: json angular typescript


【解决方案1】:

您是否尝试过使用中间件属性? 您可能希望在这里强制使用 Camel 或 Pascal Case?

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

【讨论】:

    【解决方案2】:

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

    public void ConfigureServices(IServiceCollection services)
    {
    
        services.AddMvc()
            .AddJsonOptions(options => options.SerializerSettings.ContractResolver = new DefaultContractResolver());
    }
    

    【讨论】:

      猜你喜欢
      • 2022-01-25
      • 1970-01-01
      • 2015-11-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-21
      • 2012-10-09
      • 2022-01-24
      相关资源
      最近更新 更多