JSO*_*SON 4 nodatime json-serialization asp.net-core-2.1
目前,我正在尝试使用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();
Run Code Online (Sandbox Code Playgroud)
我也尝试过文档中提到的ServiceStackText,但这也没有用.
NodaSerializerDefinitions.LocalTimeSerializer.ConfigureSerializer();
DateTimeZoneProviders.Tzdb
.CreateDefaultSerializersForNodaTime()
.ConfigureSerializersForNodaTime();
Run Code Online (Sandbox Code Playgroud)
我一直得到以下格式,
即LocalDate序列化:
{
"patientDob": "Thursday, June 15, 2017",
}
Run Code Online (Sandbox Code Playgroud)
如何配置字符串ISO 8601规范.NodaTime全局格式化日期类型?
我的模特,
{
public LocalDate patientDob { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
和我的视图模型/ API资源:
{
public string patientDob { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
Jon*_*eet 17
这是您控制器中的问题:
res.NodaLocalDateString = apiResource.NodaLocalDate = nodaModel.NodaLocalDate.ToString ();
Run Code Online (Sandbox Code Playgroud)
你根本没有转换LocalDate成JSON; 你正在将一个字符串转换为JSON,并且你通过调用获得该字符串LocalDate.ToString().
将您的API资源更改为具有LocalDate属性而不是string属性,以便转换由Json.NET而不是您调用完成ToString().
| 归档时间: |
|
| 查看次数: |
2038 次 |
| 最近记录: |