diff --git a/spa/include/spa/utils/json-core.h b/spa/include/spa/utils/json-core.h index 5616bffe1..aa36e2d51 100644 --- a/spa/include/spa/utils/json-core.h +++ b/spa/include/spa/utils/json-core.h @@ -232,7 +232,7 @@ SPA_API_JSON int spa_json_next(struct spa_json * iter, const char **value) switch (cur) { case '\0': case '\t': case ' ': case '\r': case '\n': - case '"': case '#': + case '"': case '#': case '{': case '[': case ':': case ',': case '=': case ']': case '}': iter->state = __STRUCT | flag; if (iter->depth > 0) diff --git a/test/test-spa-json.c b/test/test-spa-json.c index 0c3c46f59..75fde8d38 100644 --- a/test/test-spa-json.c +++ b/test/test-spa-json.c @@ -350,6 +350,12 @@ PWTEST(json_parse) expect_string(&it[0], "hello"); expect_end(&it[0]); + json = "xy{}"; + spa_json_init(&it[0], json, strlen(json)); + expect_string_or_bare(&it[0], "xy"); + expect_object(&it[0], &it[1]); + expect_end(&it[0]); + /* top-level context */ json = "x y x y"; spa_json_init(&it[0], json, strlen(json)); @@ -944,6 +950,7 @@ PWTEST(json_data) "n_array_missing_value.json", "n_array_number_and_comma.json", "n_array_number_and_several_commas.json", + "n_array_inner_array_no_comma.json", "n_object_comma_instead_of_colon.json", "n_object_double_colon.json", "n_object_missing_semicolon.json",