iotgateway/WalkingTec.Mvvm/WalkingTec.Mvvm.Core/Json/DateRangeConverter.cs
2021-12-14 14:10:44 +08:00

62 lines
1.8 KiB
C#

using System;
using System.Collections.Generic;
using System.Text;
using System.Text.Json;
using System.Text.Json.Serialization;
using WalkingTec.Mvvm.Core;
namespace WalkingTec.Mvvm.Core.Json
{
public class DateRangeConverter : JsonConverter<DateRange>
{
public override DateRange Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
{
if (reader.TokenType == JsonTokenType.Null)
{
return null;
}
try
{
if (reader.TokenType == JsonTokenType.StartArray)
{
reader.Read();
string[] ds = new string[2];
ds[0] = reader.GetString();
reader.Read();
ds[1] = reader.GetString();
reader.Read();
if (DateRange.TryParse(ds, out var dateRange))
{
return dateRange;
}
else
{
return null;
}
}
}
catch (Exception)
{
}
return null;
}
public override void Write(Utf8JsonWriter writer, DateRange value, JsonSerializerOptions options)
{
if (value == null)
{
writer.WriteNullValue();
}
else
{
//writer.WriteStringValue(JsonSerializer.Serialize(value),);
writer.WriteStartArray();
writer.WriteStringValue(value.GetStartTime().ToString());
writer.WriteStringValue(value.GetEndTime().ToString());
writer.WriteEndArray();
}
}
}
}