У меня есть YAJL, анализирующий простые элементы, подобные приведенным в прилагаемом примере, без проблем. (Строки, целые числа, массивы, ...)Parse complex JSON sub objects in C with YAJL
Пример кода можно найти здесь: http://lloyd.github.io/yajl/yajl-2.0.1/example_2parse_config_8c-example.html
, но теперь у меня есть этот тип объекта JSON:
{
"cmd":2,
"properties":
[
{
"idx":40,
"val":8813.602692
},
{
"idx":41,
"val":960
},
{
"idx":42,
"val":2
},
{
"idx":48,
"val":9
}
]
}
Я могу получить команду с помощью (см. Определения используемых переменных в связанном примере):
const char * path[] = {"cmd", (const char *) 0 };
yajl_val v = yajl_tree_get(ynode, path, yajl_t_number);
if (v)
*cmd = (commands)((int)YAJL_GET_INTEGER(v));
И я могу получить ссылку на массив свойств с помощью:
int ar_sz;
const char * path[] = {"properties", (const char *) 0 };
yajl_val v = yajl_tree_get(ynode, path, yajl_t_array);
if (v)
{
ar_sz = v->u.array.len;
}
Это дает мне правильный размер массива, но я понятия не имею, о том, как получить вложенные элементы IDX и Вэл из элементов массива.
Любая помощь очень ценится