diff --git a/src/json.c b/src/json.c index b48dba4a..b89fbaa6 100644 --- a/src/json.c +++ b/src/json.c @@ -398,6 +398,20 @@ bool json_iter_get_container(struct json_iter *iter, return true; } +bool json_iter_get_string(struct json_iter *iter, char **s) +{ + struct json_contents *c = iter->contents; + jsmntok_t *t = c->tokens + iter->current; + + if (t->type != JSMN_STRING) + return false; + + if (s) + *s = TOK_TO_STR(c->json, t); + + 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 518d778c..1db3428d 100644 --- a/src/json.h +++ b/src/json.h @@ -95,6 +95,7 @@ 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); +bool json_iter_get_string(struct json_iter *iter, char **s); enum json_type json_iter_get_type(struct json_iter *iter); bool json_iter_next(struct json_iter *iter);