Skip to content
Snippets Groups Projects
Commit 6be9f7ac authored by Jakob Olsson's avatar Jakob Olsson
Browse files

update getter func

parent dd9ab7fb
No related branches found
No related tags found
No related merge requests found
......@@ -102,7 +102,7 @@ int get_idx(char *key, int *idx, char *out)
}
strncpy(out, buffer, 31);
printf("%s %d, out=%s, buffer=%s", __func__, __LINE__, out, buffer);
printf("%s %d, out=%s, buffer=%s\n", __func__, __LINE__, out, buffer);
return len;
}
......@@ -386,11 +386,27 @@ struct json_object *get(struct json_object *src, char *fmt)
struct json_object *ptr, *tmp = src;
const char *delimiter = ".";
char fmt_cpy[1024] = {0};
char parsed_key[32] = {0};
int idx[32];
strcpy(fmt_cpy, fmt);
for (char *p = strtok(fmt_cpy,delimiter); p != NULL; p = strtok(NULL, delimiter)) {
json_object_object_get_ex(tmp, p, &ptr);
for (char *key = strtok(fmt_cpy,delimiter); key != NULL; key = strtok(NULL, delimiter)) {
int len = 0;
len = get_idx(key, idx, parsed_key);
json_object_object_get_ex(tmp, parsed_key, &ptr);
printf("%s %d ptr = %s\n", __func__, __LINE__, json_object_get_string(ptr));
for (int i = 0; i < len; i++) {
if (!json_object_is_type(ptr, json_type_array))
return NULL;
int index = (idx[i] == -1 ? json_object_array_length(ptr) -1 : idx[i]);
ptr = json_object_array_get_idx(ptr, index);
printf("%s %d ptr = %s\n", __func__, __LINE__, json_object_get_string(ptr));
}
tmp = ptr;
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment