Estoy tratando de serializar objetos como JSON con MVC4 WebAPI (RTM - acaba de instalar VS2012 RTM hoy pero estaba teniendo este problema ayer en el RC) y me gustaría todos los nulos que se representarán en la salida JSON. De esta manera:No puedo hacer MVC4 WebApi incluir campos nulos en JSON
[{"Id": 1, "PropertyThatMightBeNull": null},{"Id":2, "PropertyThatMightBeNull": null}]
Pero lo que estoy recibiendo es
[{"Id":1},{"Id":2}]
he encontrado este Q/A WebApi doesnt serialize null fields pero la respuesta sea no funciona para mí o estoy no comprender donde para poner la respuesta.
Aquí es lo que he intentado:
En Application_Start de Global.asax.cs, añadí:
var json = GlobalConfiguration.Configuration.Formatters.JsonFormatter; json.SerializerSettings.NullValueHandling = Newtonsoft.Json.NullValueHandling.Include; json.SerializerSettings.DefaultValueHandling = Newtonsoft.Json.DefaultValueHandling.Include;
esto no (parece que) el error y parece para ejecutar realidad basado en mirar lo siguiente que intenté
En un método de controlador (en una subclase de ApiController), añadido:
base.Configuration.Formatters.JsonFormatter.SerializerSettings.NullValueHandling = Newtonsoft.Json.NullValueHandling.Include; base.Configuration.Formatters.JsonFormatter.SerializerSettings.DefaultValueHandling = Newtonsoft.Json.DefaultValueHandling.Include;
digo # 1 ejecutada porque ambos valores en # 2 ya se habían establecido antes de que esas líneas corrieron como entré a través.
En un movimiento desesperado (porque realmente no quiero para decorar todas las propiedades de cada objeto) He intentado añadir el atrib a una propiedad que era nula y ausente:
[JsonProperty(DefaultValueHandling = DefaultValueHandling.Include, NullValueHandling = NullValueHandling.Include)]
Todos tres producen el mismo JSON con propiedades nulas omitidas.
Notas adicionales:
- que se ejecutan localmente en IIS (intentaron construida en demasiado), Windows 7 RTM VS2012.
- Métodos del controlador regresan Lista - intentado IEnumerable también
- Los objetos que intento serializar son pocos.
Resulta que lo hizo el trabajo - o debería tener. Voy a publicar lo que estaba jodiendo para darme una dosis completa de humildad :) – AndrewFreese
No puedo agradecerles lo suficiente por esta respuesta. – Simian
La primera variante también funciona (sin crear una nueva instancia de configuración de serializador), siempre que establezca DefaultValueHandling AND NullValueHandling en sus respectivos valores de inclusión – Masterfu