nodatime - 如何在 ASP.NET Core 2.1 中全局格式化 NodaTime 日期字符串?
问题描述
目前,我正在尝试使用来序列化规范中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; }
}
解决方案
这是您的控制器中的问题:
res.NodaLocalDateString = apiResource.NodaLocalDate = nodaModel.NodaLocalDate.ToString ();
您根本没有将 a 转换LocalDate
为 JSON;您正在将字符串转换为 JSON,并通过调用LocalDate.ToString()
.
将您的 API 资源更改为具有LocalDate
属性而不是string
属性,以便转换由 Json.NET 完成,而不是由您调用ToString()
.
推荐阅读
- powershell - 如何轻松地在 cmdlet 之间传递所有参数?
- php - 如果所选字段包含某些字符串或域名,则阻止表单提交
- node.js - 如何在只有发布它的用户可以访问的 NodeJs 中制作待办事项列表?
- java - QueryDSL:是否可以动态地将字段添加到 SELECT 语句?
- node.js - 有没有办法在 kafkajs 中执行生产者并在没有 process.exit() 的情况下退出函数?
- neo4j - 从路径创建新关系 (neo4j)
- sql - Adventureworks 通过 sales.salesorderdetail 加入 sales.store 以获取商店名称
- reactjs - 为什么不使用 getDerivedStateFromProps 子组件不会重新渲染?
- java - 无法使用地图调用 SPeL Expression.setValue()
- perl - 如何在 Perl 中重新排序列表元素