Beispiel #1
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
            });
        }
Beispiel #2
0
 public void Set(string key, bool b)
 {
     this[key] = new JBoolean(b);
 }