Ejemplo n.º 1
0
        internal static object ReadEnum(JsonReader reader, JsonDeserializeHandler handler)
        {
            var c = reader.BeforAnnotation();
            var t = handler.Types.Dequeue();

            if (c == '"')
            {
                reader.RollbackChar();
                var str = reader.ReadString();
                return(Enum.Parse(t, str));
            }

            if (c >= '0' && c <= '9')// byte、sbyte、short、ushort、int、uint、long 、ulong  default ->int
            {
                reader.RollbackChar();
                var basicType = Enum.GetUnderlyingType(t);
                if (basicType == typeof(long))
                {
                    return(PrimitiveResolve.ReadLong(reader, handler));
                }
                else if (basicType == typeof(ulong))
                {
                    return(PrimitiveResolve.ReadULong(reader, handler));
                }
                else if (basicType == typeof(uint))
                {
                    return(PrimitiveResolve.ReadUInt(reader, handler));
                }
                else
                {
                    return(PrimitiveResolve.ReadInt(reader, handler));
                }
            }
            throw new JsonDeserializationTypeResolutionException(reader, t);
        }
Ejemplo n.º 2
0
        static unsafe DateTime ReadMicrosoftDate(ref JsonReader reader, JsonDeserializeHandler handler)
        {
            if (!reader.StrCompair("\\/Date("))
            {
                goto Throw;
            }

            long     l  = PrimitiveResolve.ReadLong(ref reader, handler);
            DateTime dt = new DateTime(l * 10000L + 621355968000000000L);

            if (reader.StrCompair(")\\/\""))
            {
                return(dt);
            }
Throw:
            throw new JsonDeserializationTypeResolutionException(reader, typeof(DateTime), "Unresolvable Date");
        }