Как убедиться, что полезная нагрузка находится в определенном формате? - PullRequest
0 голосов
/ 13 февраля 2019

Как нам обеспечить, чтобы 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 ]

0 голосов
/ 13 февраля 2019

Прежде всего, DateTime - это двоичное значение.У него нет формата.Форматы применяются только тогда, когда строка анализируется в DateTime или когда строка генерируется из значения DateTime.

JSON не имеет стандартного представления даты, но стандартом по умолчанию является ISO8601, то есть yyyy'-'MM'-'dd'T'HH':'mm':'ss.FFFFFFFK.Это то, что JSON.NET понимает и производит по умолчанию.

Это только по умолчанию.Как объясняет Сериализация дат в JSON , формат можно изменить, передав класс JsonSerializerSettings с пользовательским DateFormatString в DeserializeObject :

var settings=new JsonSerializerSettings 
             {
                  DateFormatString="yyyyMMddHHmmssnnn"
             };
var data=JsonConvert.DeserializeObject<BossFileNameComponents>(requestBody,settings);
0 голосов
/ 13 февраля 2019

Вы можете использовать пользовательский JsonConverter, см. https://www.newtonsoft.com/json/help/html/CustomJsonConverter.htm.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...