newtonsoft - Serializador JSON.NET para WCF REST Services
serialize json to object c# (1)
Me siento tonto después de pensar la respuesta. Ocurre a veces :). Tuve que agregar la configuración a la RouteTable. A continuación se muestra el código en Global.asax
public class Global : HttpApplication
{
void Application_Start(object sender, EventArgs e)
{
RegisterRoutes();
}
private void RegisterRoutes()
{
// Create Json.Net formatter serializing DateTime using the ISO 8601 format
var serializerSettings = new JsonSerializerSettings();
serializerSettings.Converters.Add(new IsoDateTimeConverter());
var config = HttpHostConfiguration.Create().Configuration;
config.OperationHandlerFactory.Formatters.Clear();
config.OperationHandlerFactory.Formatters.Insert(0, new JsonNetMediaTypeFormatter(serializerSettings));
var httpServiceFactory = new HttpServiceHostFactory
{
OperationHandlerFactory = config.OperationHandlerFactory,
MessageHandlerFactory = config.MessageHandlerFactory
};
RouteTable.Routes.Add(new ServiceRoute("Service1", httpServiceFactory, typeof(Service1)));
}
}
Espero que ayude a alguien si se topan con el mismo escenario.
Estoy intentando usar el paquete NETFx Json.NET MediaTypeFormatter nuget para cambiar el DataContractJsonSerializer predeterminado en mi servicio WCF REST (framework 4.0). Descargué el paquete en mi proyecto y agregué las siguientes líneas de código en el archivo Global.asax.
void Application_Start(object sender, EventArgs e)
{
RegisterRoutes();
// Create Json.Net formatter serializing DateTime using the ISO 8601 format
var serializerSettings = new JsonSerializerSettings();
serializerSettings.Converters.Add(new IsoDateTimeConverter());
var config = HttpHostConfiguration.Create();
config.Configuration.OperationHandlerFactory.Formatters.Clear();
config.Configuration.OperationHandlerFactory.Formatters.Insert(0, new JsonNetMediaTypeFormatter(serializerSettings));
}
Pero cuando ejecuto el servicio, todavía usa el DataContractJsonSerilizer para la serialización. Debajo está la clase que estoy regresando de mi servicio.
[DataContract]
public class SampleItem
{
[DataMember]
public int Id { get; set; }
[DataMember]
public string StringValue { get; set; }
[DataMember]
public DateTime DateTime { get; set; }
}
A continuación se muestra la respuesta del servicio en Fiddler.
Puede ver que DateTime no está en formato ISO, que he especificado en serializerSettings en el código anterior. Esto me dice que el serializador JSON.NET no se usa para serializar los objetos.
Agradecería cualquier ayuda.