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