json - ¿Por qué JSONResult convierte los nombres de propiedades en Camel case a minúsculas?
Resumen del Proyecto
Estoy trabajando en un proyecto que se basa en:
1- Angular 6
2- Aspnet Core 2.1
Escenario
Estoy llamando a una solicitud GET usando el siguiente código en 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;
}
Como los nombres de mis propiedades están en Camel case. Obviamente, los vinculo igual que en mi HTML como se muestra a continuación:
<tbody>
<tr *ngFor="let engineer of _engineersList">
<td>
{{engineer.Id}}
</td>
<td>
{{engineer.Name}}
</td>
</tr>
</tbody>
Estoy obteniendo la siguiente salida (Sin enlace de datos):
Pero cuando convierto mis propiedades en Camel case a minúsculas como:
<tbody>
<tr *ngFor="let engineer of _engineersList">
<td>
{{engineer.id}}
</td>
<td>
{{engineer.name}}
</td>
</tr>
</tbody>
Hallazgos
Cuando reviso el resultado devuelto de mi solicitud GET en la consola del navegador, encontré que mi observable devuelve las propiedades en minúsculas.
Además, verifico esto en el lado del servidor, pero no se encontró ningún problema de ese tipo. El servidor me devuelve los datos correctos correctamente en Camel case.
Lo que estoy tratando de decir es ¿por qué mi resultado JSON está mostrando y vinculando los nombres de mis propiedades en minúsculas? Como puedes ver en la parte superior de esta publicación, he creado una clase modelo y sus propiedades están en Camel Case; deberían vincularse tal como están en mi HTML, pero no está funcionando. Por favor, ayúdame con esto, ¿qué estoy haciendo mal en mi código? Espero haber explicado brevemente mi pregunta.
Respuesta #1
En ASP.NET Core puedes agregar esto a Startup.cs
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc()
.AddJsonOptions(options => options.SerializerSettings.ContractResolver = new DefaultContractResolver());
}
Respuesta #2
¿Has intentado jugar con las propiedades del middleware? ¿Podrías estar buscando forzar el estilo Camel o Pascal aquí?
protected void Application_Start()
{
HttpConfiguration config = GlobalConfiguration.Configuration;
config.Formatters.JsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
config.Formatters.JsonFormatter.UseDataContractJsonSerializer = false;
}



