Fix mg_json_get for the array element result not as expected.

This commit is contained in:
oakfire 2022-09-01 15:02:17 +08:00
parent 83c76bdafc
commit 8131e30002
2 changed files with 5 additions and 0 deletions

View File

@ -2602,6 +2602,7 @@ int mg_json_get(struct mg_str json, const char *path, int *toklen) {
} else if (c == ',') {
expecting = (nesting[depth - 1] == '{') ? S_KEY : S_VALUE;
} else if (c == ']' || c == '}') {
if (depth == ed && ei >= 0) ci--; // Array ends, as ci is pre-added by 1, needs to be decremented before MG_EOO
MG_EOO('O');
if (depth == ed && ei >= 0) ci++;
} else {

View File

@ -2508,6 +2508,10 @@ static void test_json(void) {
ASSERT(mg_json_get_long(json, "$[1].b", -42) == 4);
ASSERT(mg_json_get_long(json, "$[2].a", -42) == -42);
json = mg_str("{\"a\":[1],\"b\":[2,3]}");
ASSERT(mg_json_get_long(json, "$.a[0]", -42) == 1);
ASSERT(mg_json_get_long(json, "$.a[1]", -42) == -42);
}
}