如何确保有效负载采用特定格式



我们如何强制传递到以下方法的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?

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

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

不过这只是默认设置。正如 JSON 中的序列化日期所解释的那样,可以通过将带有自定义 DateFormatString 的 JsonSerializerSettings 类传递给反序列化对象来更改格式:

var settings=new JsonSerializerSettings 
             {
                  DateFormatString="yyyyMMddHHmmssnnn"
             };
var data=JsonConvert.DeserializeObject<BossFileNameComponents>(requestBody,settings);
您可以使用

自定义 JsonConverter,请参阅 https://www.newtonsoft.com/json/help/html/CustomJsonConverter.htm。

相关内容

  • 没有找到相关文章

最新更新