Как отформатировать строку даты NodaTime глобально в ASP.NET Core 2.1? - PullRequest
0 голосов
/ 06 июня 2018

В настоящее время я пытаюсь использовать JsonFormatters для сериализации строки в ISO 8601 спецификации.формат в моей конфигурации запуска, но не смог заставить его работать.

Моя конфигурация запуска выглядит следующим образом:

services.AddMvcCore(
    (options) => {
        options.SslPort = 44321;
        options.Filters.Add(new RequireHttpsAttribute());
    }
)
.AddJsonFormatters(jsonSerializerSettings => {
    jsonSerializerSettings.DateParseHandling = DateParseHandling.None;
    jsonSerializerSettings.DateFormatString = "yyyy-MM-ddTHH:mm:ss.fffZ";
})
.AddApiExplorer()
.AddJsonOptions(options => {
    options.AllowInputFormatterExceptionMessages = false;
    options.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore;
})
.SetCompatibilityVersion(CompatibilityVersion.Version_2_1)
.AddViewLocalization(LanguageViewLocationExpanderFormat.Suffix)
.AddDataAnnotationsLocalization();

Я также попытался ServiceStackText , который упоминается в документация , но это тоже не сработало.

 NodaSerializerDefinitions.LocalTimeSerializer.ConfigureSerializer();
 DateTimeZoneProviders.Tzdb
     .CreateDefaultSerializersForNodaTime()
     .ConfigureSerializersForNodaTime();

Я продолжаю получать следующий формат,

, т. е. для сериализации LocalDate:

{
    "patientDob": "Thursday, June 15, 2017",
}

Как настроить строку ISO 8601 спец.форматирование для NodaTime типов даты в глобальном масштабе?

моя модель,

{
    public LocalDate patientDob { get; set; }
}

и ресурс моей модели / API вида:

{
    public string patientDob { get; set; }
}

1 Ответ

0 голосов
/ 07 июня 2018

Это проблема в вашем контроллере:

res.NodaLocalDateString = apiResource.NodaLocalDate = nodaModel.NodaLocalDate.ToString ();

Вы вообще не конвертируете LocalDate в JSON;вы конвертируете строку в JSON и получаете эту строку, вызывая LocalDate.ToString().

Измените свой ресурс API, чтобы иметь свойство LocalDate вместо string свойство, так что преобразование выполняется Json.NET вместо того, чтобы вы вызывали ToString().

...