Exemple #1
0
 public JToken this[int i] {
     get { return(elements[i]); }
     set {
         if (value == null)
         {
             elements[i] = new JNull();
         }
         else
         {
             elements[i] = value;
         }
     }
 }
Exemple #2
0
 public override JToken this[string key] {
     get { return(values[key]); }
     set {
         if (value == null)
         {
             values[key] = new JNull();
         }
         else
         {
             values[key] = value;
         }
     }
 }
Exemple #3
0
        public static ParseResult <JToken> ParseFirstToken(Substring encoded)
        {
            JToken token           = null;
            int    substringLength = 0;
            int    i = 0;

            while (i < encoded.Length)
            {
                char c = encoded[i];
                if (IsWhiteSpace(c))
                {
                    i++;
                }
                else if (c == '{')
                {
                    // Beginning of JSON
                    var json = ParseFirstObject(encoded.SubSubstring(i));
                    token           = json.Token;
                    substringLength = json.SubstringLength;
                    break;
                }
                else if (c == '"')
                {
                    var jString = ParseFirstString(encoded.SubSubstring(i));
                    token           = jString.Token;
                    substringLength = jString.SubstringLength;
                    break;
                }
                else if (c == '-' || IsDigit(c))
                {
                    var jNumber = ParseFirstNumber(encoded.SubSubstring(i));
                    token           = jNumber.Token;
                    substringLength = jNumber.SubstringLength;
                    break;
                }
                else if (c == '[')
                {
                    var jArray = ParseFirstArray(encoded.SubSubstring(i));
                    token           = jArray.Token;
                    substringLength = jArray.SubstringLength;
                    break;
                }
                else if (c == 't')
                {
                    if (encoded[i + 1] == 'r' &&
                        encoded[i + 2] == 'u' &&
                        encoded[i + 3] == 'e')
                    {
                        token           = new JBoolean(true);
                        substringLength = 4;
                        break;
                    }
                }
                else if (c == 'f')
                {
                    if (encoded[i + 1] == 'a' &&
                        encoded[i + 2] == 'l' &&
                        encoded[i + 3] == 's' &&
                        encoded[i + 4] == 'e')
                    {
                        token           = new JBoolean(false);
                        substringLength = 5;
                        break;
                    }
                }
                else if (c == 'n')
                {
                    if (encoded[i + 1] == 'u' &&
                        encoded[i + 2] == 'l' &&
                        encoded[i + 3] == 'l')
                    {
                        token           = new JNull();
                        substringLength = 4;
                        break;
                    }
                }
                else
                {
                    throw new System.ArgumentException("Invalid JSON");
                }

                i++;
            }

            return(new ParseResult <JToken> {
                Token = token,
                SubstringLength = substringLength
            });
        }