Подтвердить что ты не робот

Настройка пользовательских дат WebApi Json.NET

Я использую глобально явно настроенное приложение MVC4 для использования сериализатора JSON.NET. Я знаю, что у меня есть выбор использования стандартных дат ISO или старого формата даты Microsoft при сериализации дат.

Но как я могу выводить свою собственную строку формата dateTime, например: "dd/MM/yyyy hh: mm".

Я мог бы сделать это в MVC3 при подключении Json.NET в качестве сериализатора по умолчанию, но, похоже, сделать это не в MVC4.

До сих пор в приложении application_start я сделал:

  var settings =     GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings;            
        JsonSerializerSettings jSettings = new Newtonsoft.Json.JsonSerializerSettings()
        {
            Formatting = Formatting.Indented,
            DateTimeZoneHandling = DateTimeZoneHandling.Utc,


        };
        jSettings.Converters.Add(new MyDateTimeConvertor() );
        settings = jSettings;

и пользовательский конвертер, который я пытался использовать, выглядит так:

 public class MyDateTimeConvertor : DateTimeConverterBase
    {
        public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
        {
            return DateTime.Parse(reader.Value.ToString());
        }

        public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
        {
            writer.WriteValue(((DateTime)value).ToString("dd/MM/yyyy hh:mm"));
        }
    }

Anyhelp будет оценен:)

4b9b3361

Ответ 1

Измените свой установочный код следующим образом:

JsonMediaTypeFormatter jsonFormatter = GlobalConfiguration.Configuration.Formatters.JsonFormatter;
JsonSerializerSettings jSettings = new Newtonsoft.Json.JsonSerializerSettings()         
{
    Formatting = Formatting.Indented,
    DateTimeZoneHandling = DateTimeZoneHandling.Utc
};
jSettings.Converters.Add(new MyDateTimeConvertor());
jsonFormatter.SerializerSettings = jSettings;

В вашем коде вы просто меняете значение локальной переменной.

Ответ 2

Спасибо, я схожу с ума, это очень сработало для меня, вставьте это в файл Global.asax.cs

JsonMediaTypeFormatter jsonFormatter = GlobalConfiguration.Configuration.Formatters.JsonFormatter;
JsonSerializerSettings jSettings =...

создать класс MyDateTimeConvertor, вставить его в класс

public class MyDateTimeConvertor : DateTimeConverterBase
{
    public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
    {
        return DateTime...

wep api mvc4, веб-службы, пользовательский формат даты.