예제 #1
0
        private static object FillObject(JsonTokens tokens, object target)
        {
            Type   t = target.GetType();
            string name;

            while (tokens.Current != JsonTokens.OBJECT_END)
            {
                name = tokens.PopWordFinishedWith(':');
                if (_cache.TypeHasThisMember(t, name))
                {
                    _cache.SetValueInThisType(t, target, name, Parse(tokens, _cache.GetTypeOfMember(t, name)));
                }
                else
                {
                    throw new ArgumentException("Wrong Field/Property passed on argument");
                }
                if (tokens.Current == JsonTokens.COMMA)
                {
                    tokens.MoveNext();
                }
                if (tokens.Current == JsonTokens.ARRAY_END)
                {
                    throw new InvalidOperationException("Wrong Array End character detected");
                }
            }
            tokens.Pop(JsonTokens.OBJECT_END); // Discard bracket } OBJECT_END
            return(target);
        }
예제 #2
0
 private static object FillObject(JsonTokens tokens, object target)
 {
     while (tokens.Current != JsonTokens.OBJECT_END)
     {
         String key;
         try
         {
             key = tokens.PopWordFinishedWith(JsonTokens.COLON);
         }
         catch (Exception e)
         {
             throw new InvalidOperationException();
         }
         foreach (var m in TargetProperties)
         {
             if (m.Name.Equals(key))
             {
                 m.SetValue(target, Parse(tokens, m.PropertyType));
                 break;
             }
         }
         if (tokens.Current == JsonTokens.COMMA)
         {
             tokens.Pop(JsonTokens.COMMA);
         }
     }
     tokens.Pop(JsonTokens.OBJECT_END); // Discard bracket } OBJECT_END
     return(target);
 }
예제 #3
0
 private static string ParseString(JsonTokens tokens)
 {
     tokens.Pop(JsonTokens.DOUBLE_QUOTES); // Discard double quotes "
     return(tokens.PopWordFinishedWith(JsonTokens.DOUBLE_QUOTES));
 }