代码之家  ›  专栏  ›  技术社区  ›  JSON

如何在ASP中全局格式化节点时间日期字符串。净核心2.1?

  •  4
  • JSON  · 技术社区  · 7 年前

    目前,我正在尝试使用 JsonFormatters 用于在中序列化字符串 ISO 8601 在我的启动配置中使用spec.format,但无法使其工作。

    我的启动配置如下:

    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();
    

    我一直得到以下格式,

    i、 e.为了 LocalDate 序列化:

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

    如何配置字符串 ISO 8601 规范格式 NodaTime 全球约会类型?

    我的模特,

    {
        public LocalDate patientDob { get; set; }
    }
    

    以及我的视图模型/API资源:

    {
        public string patientDob { get; set; }
    }
    
    1 回复  |  直到 6 年前
        1
  •  17
  •   Jon Skeet    7 年前

    这就是控制器中的问题:

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

    你不是在改变一个 LocalDate 根本就不需要JSON;你在改变一个 一串 转换为JSON,然后通过调用 LocalDate.ToString() .

    更改您的API资源以获得 本地日期 财产而不是 string 属性,以便转换由Json完成。而不是你打电话 ToString() .