public void Deserialize()
        {
            string json                 = "America/Los_Angeles";
            var    dateTimeZone         = serializer.Deserialize(json);
            var    expectedDateTimeZone = DateTimeZoneProviders.Tzdb["America/Los_Angeles"];

            Assert.Equal(expectedDateTimeZone, dateTimeZone);
        }
 private static void ConfigureNullableSerializer <T>(this IServiceStackSerializer <T> serializer) where T : struct
 {
     //ServiceStack.Text will never use the serialize / deserialize fn if the value is null
     //or the text is null or empty.
     if (serializer.UseRawSerializer)
     {
         JsConfig <T?> .RawSerializeFn = arg => serializer.Serialize(arg.Value);
         JsConfigWrapper <T?> .SetRawDeserializerMember(s => serializer.Deserialize(s));
     }
     else
     {
         JsConfig <T?> .SerializeFn = arg => serializer.Serialize(arg.Value);
         JsConfigWrapper <T?> .SetDeserializerMember(s => serializer.Deserialize(s));
     }
 }
        /// <summary>
        /// Deserializes the given JSON.
        /// </summary>
        /// <param name="text">The JSON to parse.</param>
        /// <returns>The deserialized <see cref="Interval"/>.</returns>
        public Interval Deserialize(string text)
        {
            var complexIntervalDto = JsonSerializer.DeserializeFromString <ComplexRawIntervalDto>(text);

            if (!IsValid(complexIntervalDto))
            {
                throw new InvalidNodaDataException("An Interval must contain Start and End properties.");
            }

            var start = _instantSerializer.Deserialize(complexIntervalDto.Start);
            var end   = _instantSerializer.Deserialize(complexIntervalDto.End);

            var interval = new Interval(start, end);

            return(interval);
        }
Ejemplo n.º 4
0
        private static void AssertConversions <T>(T value, string expectedJson, IServiceStackSerializer <T> serializer)
        {
            var actualJson = serializer.Serialize(value);

            Assert.Equal(expectedJson, actualJson);

            var deserializedValue = serializer.Deserialize(expectedJson);

            Assert.Equal(value, deserializedValue);
        }
Ejemplo n.º 5
0
        /// <summary>
        /// Deserializes the given JSON.
        /// </summary>
        /// <param name="text">The JSON to parse.</param>
        /// <returns>The deserialized <see cref="Interval"/>.</returns>
        public Interval Deserialize(string text)
        {
            if (string.IsNullOrEmpty(text))
            {
                throw new InvalidNodaDataException("No text to parse.");
            }

            var slash = text.IndexOf(Iso8601TimeIntervalSeparator);

            if (slash == -1)
            {
                throw new InvalidNodaDataException("Expected ISO-8601-formatted interval; slash was missing.");
            }
            var startText = text.Substring(0, slash);
            var endText   = text.Substring(slash + 1);

            var start = _instantSerializer.Deserialize(startText);
            var end   = _instantSerializer.Deserialize(endText);

            return(new Interval(start, end));
        }
        public static void ConfigureSerializer(IServiceStackSerializer <LocalDate> serializer)
        {
            JsConfig <LocalDate> .SerializeFn = args =>
            {
                var serialized = serializer.Serialize(args);
                return(serialized);
            };
            JsConfig <LocalDate> .DeSerializeFn = args =>
            {
                var deserialized = serializer.Deserialize(args);
                return(deserialized);
            };

            JsConfig <LocalDate?> .SerializeFn = arg =>
            {
                var serializedValue = serializer.Serialize(arg.Value);
                return(serializedValue);
            };
            JsConfig <LocalDate?> .DeSerializeFn = s =>
            {
                var deserializedValue = serializer.Deserialize(s);
                return(deserializedValue);
            };
        }