public DateTimeOffset?Deserialize(ref JsonReader reader, IJsonFormatterResolver formatterResolver)
        {
            if (reader.ReadIsNull())
            {
                return(null);
            }

            var token = reader.GetCurrentJsonToken();

            if (token == JsonToken.Number)
            {
                reader.ReadInt64();
            }
            else
            {
                var number = reader.ReadStringSegmentRaw();
                NumberConverter.ReadInt64(number.Array, number.Offset, out var readCount);
                if (readCount == 0)
                {
                    return(null);
                }
            }

            return(DogApiUtil.UnixTimeSecondsToDateTimeOffset(reader.ReadInt64()));
        }
コード例 #2
0
 public DateTimeOffset?Deserialize(ref JsonReader reader, IJsonFormatterResolver formatterResolver)
 {
     if (reader.ReadIsNull())
     {
         return(null);
     }
     return(DogApiUtil.UnixTimeSecondsToDateTimeOffset(reader.ReadInt64()));
 }
        public DateTimeOffset Deserialize(ref JsonReader reader, IJsonFormatterResolver formatterResolver)
        {
            var  token = reader.GetCurrentJsonToken();
            long lngValue;

            if (token == JsonToken.Number)
            {
                lngValue = reader.ReadInt64();
            }
            else
            {
                var number = reader.ReadStringSegmentRaw();
                lngValue = NumberConverter.ReadInt64(number.Array, number.Offset, out _);
            }

            return(DogApiUtil.UnixTimeSecondsToDateTimeOffset(lngValue));
        }
コード例 #4
0
        public DogMetricPoint Deserialize(ref JsonReader reader, IJsonFormatterResolver formatterResolver)
        {
            if (reader.ReadIsNull())
            {
                return(null);
            }
            else
            {
                reader.ReadIsBeginArrayWithVerify();

                DateTimeOffset timestamp;
                double         value;
                var            count = 0;
                if (!reader.ReadIsEndArrayWithSkipValueSeparator(ref count))
                {
                    var dec = DecimalFormatter.Default.Deserialize(ref reader, formatterResolver);  /* 小数点がついてくるのでDecimalFormatterを使う */
                    timestamp = DogApiUtil.UnixTimeMillisecondsToDateTimeOffset((long)dec);
                }
                else
                {
                    throw new JsonParsingException("invalid point json data");
                }

                if (!reader.ReadIsEndArrayWithSkipValueSeparator(ref count))
                {
                    value = reader.ReadDouble();
                }
                else
                {
                    throw new JsonParsingException("invalid point json data");
                }

                if (!reader.ReadIsEndArrayWithSkipValueSeparator(ref count))
                {
                    throw new JsonParsingException("invalid point json data");
                }

                return(new DogMetricPoint()
                {
                    Timestamp = timestamp, Value = value
                });
            }
        }
コード例 #5
0
 public DateTimeOffset Deserialize(ref JsonReader reader, IJsonFormatterResolver formatterResolver) =>
 DogApiUtil.UnixTimeSecondsToDateTimeOffset(reader.ReadInt64());