代码之家  ›  专栏  ›  技术社区  ›  Ahmer Ali Ahsan

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

  •  0
  • Ahmer Ali Ahsan  · 技术社区  · 7 年前

    工程概况

    我正在做一个基于以下内容的项目:

    1-角度6

    2-Aspnet核心2.1

    脚本

    我正在使用angular中的下面的代码调用一个get请求

    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

    <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

    1 回复  |  直到 7 年前
        1
  •  0
  •   JBoothUA    7 年前

    你试过使用中间件属性吗?

    protected void Application_Start()
    {
        HttpConfiguration config = GlobalConfiguration.Configuration;
        config.Formatters.JsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
        config.Formatters.JsonFormatter.UseDataContractJsonSerializer = false;
    }
    
        2
  •  0
  •   tmndungu    6 年前

    在ASP.NET你可以把这个加到启动.cs

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