代码之家  ›  专栏  ›  技术社区  ›  Alex Gordon

如何确保有效负载为特定格式?

  •  0
  • Alex Gordon  · 技术社区  · 6 年前

    我们如何实施 DateTime 以特定格式传递到以下方法中: yyyyMMddHHmmssnnn ?

        [FunctionName("OnGenerateBossNameHttpTriggered")]
        public static async Task<IActionResult> Run(
            [HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = "OnGenerateBossNameHttpTriggered")] HttpRequest req,
            ILogger log)
        {
            var requestBody = await new StreamReader(req.Body).ReadToEndAsync();
            var data = JsonConvert.DeserializeObject<BossFileNameComponents>(requestBody);
            return new OkObjectResult(FileNameGenerator.Generate(data));
        }
    

    我接受的数据模型定义如下:

    public class BossFileNameComponents
    {
        public string PracticeCode { get; set; }
        public string SourceSystem { get; set; }
        public string PatientLastName { get; set; }
        public string PatientFirstName { get; set; }
        public string DateOfService { get; set; }
        public string PatientIdentifier { get; set; }
        public string EncounterIdentifier { get; set; }
        public string Extension { get; set; }
        public DateTime TieBreaker { get; set; }
    }
    

    我们如何验证 TieBreaker 消费者以特定格式提供: yyyyMMddHHmmssnnn?

    2 回复  |  直到 6 年前
        1
  •  2
  •   Panagiotis Kanavos    6 年前

    首先,DateTime是一个二进制值。它没有格式。仅当字符串被解析为DateTime或从DateTime值生成字符串时,格式才适用。

    JSON没有标准的日期表示,但实际上的标准是ISO8601,即 yyyy'-'MM'-'dd'T'HH':'mm':'ss.FFFFFFFK .这就是JSON。NET默认理解并生成。

    但这只是默认值。像 Serializing Dates in JSON 说明,可以通过传递 JsonSerializerSettings 使用自定义 DateFormatString DeserializeObject :

    var settings=new JsonSerializerSettings 
                 {
                      DateFormatString="yyyyMMddHHmmssnnn"
                 };
    var data=JsonConvert.DeserializeObject<BossFileNameComponents>(requestBody,settings);
    
        2
  •  1
  •   Andrey Sidorenko    6 年前

    您可以使用自定义JsonConverter,请参见 https://www.newtonsoft.com/json/help/html/CustomJsonConverter.htm