diff options
author | Emmanuele Bassi <ebassi@openedhand.com> | 2007-09-21 12:08:09 +0100 |
---|---|---|
committer | Emmanuele Bassi <ebassi@openedhand.com> | 2007-09-21 12:08:09 +0100 |
commit | c77af0ec13e3e11cdb784510e6a75125bb8ef667 (patch) | |
tree | 14b5a90d538c6605aa484413ce707d47132ff434 /json-glib/json-parser.c | |
parent | 0ff67fb63c5e021b88d6a3d17c5e34dc95ac2676 (diff) | |
download | json-glib-c77af0ec13e3e11cdb784510e6a75125bb8ef667.tar.gz |
Top-levels in JSON can only be objects or arrays
JSON is an object serialisation format (thanks, RFC4627), so it can
only express objects and/or arrays as top-levels.
Diffstat (limited to 'json-glib/json-parser.c')
-rw-r--r-- | json-glib/json-parser.c | 24 |
1 files changed, 14 insertions, 10 deletions
diff --git a/json-glib/json-parser.c b/json-glib/json-parser.c index dbdefd3..f0fecb7 100644 --- a/json-glib/json-parser.c +++ b/json-glib/json-parser.c @@ -135,14 +135,21 @@ static guint json_parse_array (JsonParser *parser, GScanner *scanner) { - return G_TOKEN_NONE; -} + guint token; + guint result = G_TOKEN_NONE; -static guint -json_parse_pair (JsonParser *parse, - GScanner *scanner) -{ - return G_TOKEN_NONE; + token = g_scanner_get_next_token (scanner); + if (token != G_TOKEN_LEFT_BRACE) + return G_TOKEN_LEFT_BRACE; + + token = g_scanner_get_next_token (scanner); + if (token == G_TOKEN_RIGHT_BRACE) + return G_TOKEN_NONE; + else + { + } + + return result; } static guint @@ -181,9 +188,6 @@ json_parse_statement (JsonParser *parser, case G_TOKEN_LEFT_BRACE: return json_parse_array (parser, scanner); - case G_TOKEN_STRING: - return json_parse_pair (parser, scanner); - default: g_scanner_get_next_token (scanner); return G_TOKEN_SYMBOL; |