У меня есть динамический объект, который содержит даты (среди прочих данных).
Некоторые из этих дат имеют Kind UTC, а другие имеют Kind Local, например:
var dynamicObject = new
{
utcDate = DateTime.UtcNow, //This one has Kind = DateTimeKind.Utc
localDate = DateTime.Now //This one has Kind = DateTimeKind.Local
}
И затем яиметь JsonSerializer, который работает следующим образом:
var isoDateTimeConverter = new IsoDateTimeConverter();
isoDateTimeConverter.DateTimeFormat = "yyyy'-'MM'-'dd'T'HH':'mm':'ss'Z'";
// ^
// Notice this
var serializerSettings = new JsonSerializerSettings();
SerializerSettings.Converters.Add(isoDateTimeConverter);
var response = context.HttpContext.Response;
var writer = new JsonTextWriter(response.Output) { Formatting = Formatting };
var serializer = JsonSerializer.Create(serializerSettings);
serializer.Serialize(writer, dynamicObject);
writer.Flush();
, который создает строку JSON следующим образом:
{
"utcDate":"2019-05-02T19:52:20Z",
"localDate":"2019-05-02T15:52:20Z"
}
Это ожидается из-за того, как определен мой isoDateTimeConverter
.
Но я хотел бы сериализовать следующим образом:
{
"utcDate":"2019-05-02T19:52:20Z",
"localDate":"2019-05-02T15:52:20" // <--- no Z
}
То есть я хотел бы добавить 'Z' только тогда, когда тип DateTime равен Utc .
Возможно ли это с IsoDateTimeConverter
и / или JsonSerializerSettings
?