目前,我正在尝试使用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中提到的documentation,但这也没有用。
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; }
}
答案 0 :(得分:17)
这是您控制器中的问题:
res.NodaLocalDateString = apiResource.NodaLocalDate = nodaModel.NodaLocalDate.ToString ();
您根本没有将LocalDate
转换为JSON;您正在将字符串转换为JSON,并且您通过调用LocalDate.ToString()
来获取该字符串。
将您的API资源更改为具有LocalDate
属性而不是string
属性,以便转换由Json.NET完成,而不是您调用ToString()
。