summaryrefslogtreecommitdiff
path: root/json-glib/json-parser.c
diff options
context:
space:
mode:
authorEmmanuele Bassi <ebassi@openedhand.com>2007-09-21 12:08:09 +0100
committerEmmanuele Bassi <ebassi@openedhand.com>2007-09-21 12:08:09 +0100
commitc77af0ec13e3e11cdb784510e6a75125bb8ef667 (patch)
tree14b5a90d538c6605aa484413ce707d47132ff434 /json-glib/json-parser.c
parent0ff67fb63c5e021b88d6a3d17c5e34dc95ac2676 (diff)
downloadjson-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.c24
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;