diff --git a/src/json.c b/src/json.c index 9e34eeb1..b48dba4a 100644 --- a/src/json.c +++ b/src/json.c @@ -384,6 +384,20 @@ bool json_iter_get_null(struct json_iter *iter) return false; } +bool json_iter_get_container(struct json_iter *iter, + struct json_iter *container) +{ + struct json_contents *c = iter->contents; + jsmntok_t *t = c->tokens + iter->current; + + if (t->type != JSMN_OBJECT && t->type != JSMN_ARRAY) + return false; + + iter_recurse(iter, t, container); + + return true; +} + enum json_type json_iter_get_type(struct json_iter *iter) { struct json_contents *c = iter->contents; diff --git a/src/json.h b/src/json.h index 458deb93..518d778c 100644 --- a/src/json.h +++ b/src/json.h @@ -93,6 +93,8 @@ bool json_iter_get_int(struct json_iter *iter, int *i); bool json_iter_get_uint(struct json_iter *iter, unsigned int *i); bool json_iter_get_boolean(struct json_iter *iter, bool *b); bool json_iter_get_null(struct json_iter *iter); +bool json_iter_get_container(struct json_iter *iter, + struct json_iter *container); enum json_type json_iter_get_type(struct json_iter *iter); bool json_iter_next(struct json_iter *iter);