System.Json.JsonReader.ReadCore C# (CSharp) Method

ReadCore() private method

private ReadCore ( ) : JsonValue
return JsonValue
		JsonValue ReadCore ()
		{
			SkipSpaces ();
			int c = PeekChar ();
			if (c < 0)
				throw JsonError ("Incomplete JSON input");
			switch (c) {
			case '[':
				ReadChar ();
				var list = new JsonArray ();
				SkipSpaces ();
				if (PeekChar () == ']') {
					ReadChar ();
					return list;
				}
				while (true) {
					list.Add (ReadCore ());
					SkipSpaces ();
					c = PeekChar ();
					if (c != ',')
						break;
					ReadChar ();
					continue;
				}
				if (ReadChar () != ']')
					throw JsonError ("JSON array must end with ']'");
				return list;
			case '{':
				ReadChar ();
				var obj = new JsonObject ();
				SkipSpaces ();
				if (PeekChar () == '}') {
					ReadChar ();
					return obj;
				}
				while (true) {
					SkipSpaces ();
					string name = ReadStringLiteral ();
					SkipSpaces ();
					Expect (':');
					SkipSpaces ();
					obj.Add (name, ReadCore ());
					SkipSpaces ();
					c = ReadChar ();
					if (c == ',')
						continue;
					if (c == '}')
						break;
				}
				return obj;
			case 't':
				Expect ("true");
				return new JsonPrimitive (true);
			case 'f':
				Expect ("false");
				return new JsonPrimitive (false);
			case 'n':
				Expect ("null");
				// FIXME: what should we return?
				return new JsonPrimitive ((string) null);
			case '"':
				return new JsonPrimitive (ReadStringLiteral ());
			default:
				if ('0' <= c && c <= '9' || c == '-')
					return ReadNumericLiteral ();
				else
					throw JsonError (String.Format ("Unexpected character '{0}'", (char) c));
			}
		}