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); }
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"); }