Saltar al contenido

Devuelve json con la primera letra minúscula de los nombres de propiedad

Intenta entender el código correctamente antes de utilizarlo a tu trabajo y si tdeseas aportar algo puedes decirlo en los comentarios.

Solución:

Si estás usando Newtonsoft.Jsonpuedes añadir JsonPropiedades a su modelo de vista:

public class LoginModel : IData

     [JsonProperty(PropertyName = "email")]
     public string Email get;set;

     [JsonProperty(PropertyName = "password")]
     public string Password get;set;

Para forzar todos los datos json devueltos desde api a camel case, es más fácil usar Newtonsoft Json con el solucionador de contratos de camel case predeterminado.

Crea una clase como esta:

using Newtonsoft.Json.Serialization;

internal class JsonContentNegotiator : IContentNegotiator

    private readonly JsonMediaTypeFormatter _jsonFormatter;

    public JsonContentNegotiator(JsonMediaTypeFormatter formatter)
    
        _jsonFormatter = formatter;          
        _jsonFormatter.SerializerSettings.ContractResolver =
            new CamelCasePropertyNamesContractResolver();
    

    public ContentNegotiationResult Negotiate(Type type, HttpRequestMessage request, IEnumerable formatters)
    
        return new ContentNegotiationResult(_jsonFormatter, new MediaTypeHeaderValue("application/json"));
    

y configure esto durante la configuración de la API (al inicio):

var jsonFormatter = new JsonMediaTypeFormatter();
httpConfiguration.Services.Replace(typeof(IContentNegotiator), new JsonContentNegotiator(jsonFormatter));

Puede agregar las dos declaraciones siguientes en la configuración de la API web o en el archivo de inicio

using Newtonsoft.Json;
using Newtonsoft.Json.Serialization;

GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings.Formatting = Formatting.Indented;

Pero es muy importante usar el return Ok() método en lugar de return Json()de lo contrario; Esto no funcionará.

si tiene que usar el método Json (y no tiene otra opción), vea esta respuesta https://stackoverflow.com/a/28960505/4390133

Al final de todo puedes encontrar las aclaraciones de otros gestores de proyectos, tú todavía tienes la libertad de mostrar el tuyo si te apetece.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *