diff options
Diffstat (limited to 'json-glib/json-parser.c')
-rw-r--r-- | json-glib/json-parser.c | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/json-glib/json-parser.c b/json-glib/json-parser.c index 35747d3..419f695 100644 --- a/json-glib/json-parser.c +++ b/json-glib/json-parser.c @@ -337,6 +337,7 @@ json_parse_value (JsonParser *parser, guint token, JsonNode **node) { + JsonNode *current_node = parser->priv->current_node; gboolean is_negative = FALSE; if (token == '-') @@ -383,8 +384,19 @@ json_parse_value (JsonParser *parser, break; default: - *node = NULL; - return G_TOKEN_RIGHT_BRACE; + { + JsonNodeType cur_type; + + *node = NULL; + + cur_type = json_node_get_node_type (current_node); + if (cur_type == JSON_NODE_ARRAY) + return G_TOKEN_RIGHT_BRACE; + else if (cur_type == JSON_NODE_OBJECT) + return G_TOKEN_RIGHT_CURLY; + else + return G_TOKEN_SYMBOL; + } } return G_TOKEN_NONE; |