我们如何强制传递到以下方法中的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?
答案 0 :(得分:2)
首先,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);
答案 1 :(得分:1)
您可以使用自定义JsonConverter,请参见https://www.newtonsoft.com/json/help/html/CustomJsonConverter.htm。