Ejemplo n.º 1
0
        internal override object BaseDeserialize(TextReader r, string path)
        {
            if (JsonParserUtil.PeekIsNull(r, true, path))
            {
                return(null);
            }
            var result = new List <TElement>();
            var parens = JsonParserUtil.ReadStartArray(r);
            var c      = JsonParserUtil.PeekNextChar(r, true);

            while (c != ']')
            {
                result.Add(_elementSerializer.Deserialize(r, path));
                c = JsonParserUtil.PeekNextChar(r, true);
                if (c != ',' && c != ']')
                {
                    throw new JsonDeserializationException(string.Format("Expected ']' at '{0}'", path));
                }
                else if (c == ',')
                {
                    JsonParserUtil.ReadNextChar(r, true);
                }
            }
            JsonParserUtil.ReadEndArray(r, parens);
            return(typeof(TEnumerable).IsArray ? result.ToArray() : Activator.CreateInstance(typeof(TEnumerable), result));
        }