我正在尝试解析JSON文件中的数组,如此
parse_config.c
使用以下代码,改编自库中包含的char errbuf[1024];
yajl_val node;
long length;
char *file_data = read_file(&length, "conf.json");
node = yajl_tree_parse((const char *) file_data, errbuf, sizeof(errbuf));
const char *path[] = {"val", (const char *) 0};
yajl_val v = yajl_tree_get(node, path, yajl_t_number);
if (v)
printf("Node found.\n");
else
printf("Can't find node %s\n", path[0]);
yajl_tree_free(node);
free(file_data);
,
{
"val": 5
}
此方法对单个值成功,例如
v
(成功的意思是填充Node found.
并打印#2088
)但不是数组。对于要解析的数组,我需要做些什么?
感谢。
答案 0 :(得分:0)
接下来,您可以使用此代码解析它:
size_t len = v->u.array.len;
int i;
for ( i = 0; i < len; ++i ) {
// get ref to one object in array at a time
yajl_val obj = v->u.array.values[ i ]; // object
if(YAJL_IS_DOUBLE(obj)){
printf( "%s/%f ", key, obj->u.number.d );
}
}