private DateTime?DeserializeDateTime(string value) { if (value.Length == 0) { return(null); } return(SerializerUtil.ParseDateTime(value, null, _option.DateTimeZoneHandling)); }
private object DeserializeValue(Type type) { var stype = type.GetNonNullableType(); var typeCode = Type.GetTypeCode(stype); if (typeCode == TypeCode.Object && stype != typeof(TimeSpan)) { return(ParseObject(type)); } if (_xmlReader.IsEmptyElement) { if (_xmlReader.NodeType == XmlNodeType.Element) { XmlReaderHelper.ReadAndConsumeMatchingEndElement(_xmlReader); } return(type.GetDefaultValue()); } bool beStartEle; if ((beStartEle = (_xmlReader.NodeType == XmlNodeType.Element))) { XmlReaderHelper.ReadUntilAnyTypesReached(_xmlReader, new[] { XmlNodeType.EndElement, XmlNodeType.Text, XmlNodeType.CDATA }); } var value = _xmlReader.NodeType == XmlNodeType.EndElement ? string.Empty : _xmlReader.ReadContentAsString(); if (beStartEle) { XmlReaderHelper.ReadAndConsumeMatchingEndElement(_xmlReader); } if (type.GetNonNullableType() == typeof(DateTime)) { CheckNullString(value, type); return(SerializerUtil.ParseDateTime(value, _option.Culture, _option.DateTimeZoneHandling)); } else if (type.GetNonNullableType() == typeof(TimeSpan)) { if (TimeSpan.TryParse(value, out TimeSpan result)) { return(result); } } return(value.ToType(type)); }
private object DeserializeValue(Type type) { if (_jsonReader.IsNull()) { if ((type.GetNonNullableType().IsValueType&& !type.IsNullableType())) { throw new SerializationException(SR.GetString(SRKind.JsonNullableType, type)); } return(null); } var stype = type.GetNonNullableType(); var typeCode = Type.GetTypeCode(stype); if (typeCode == TypeCode.Object) { return(ParseObject(type)); } var value = _jsonReader.ReadValue(); if (type.IsNullableType() && (value == null || string.IsNullOrEmpty(value.ToString()))) { return(null); } switch (typeCode) { case TypeCode.DateTime: CheckNullString(value, type); return(SerializerUtil.ParseDateTime(value.ToString(), _option.Culture, _option.DateTimeZoneHandling)); case TypeCode.String: return(value == null ? null : DeserializeString(value.ToString())); default: CheckNullString(value, type); try { return(value.ToType(stype)); } catch (Exception ex) { throw new SerializationException(SR.GetString(SRKind.DeserializeError, value, type), ex); } } }