JSON テキストは次のとおりです。
{
"retcode": 0,
"result": {
"info": [{
"face": 180,
"flag": 8913472,
"nick": "tom",
"uin": 2951718842
}, {
"face": 252,
"flag": 512,
"nick": "jim",
"uin": 824317252
}, {
"face": 0,
"flag": 17302018,
"nick": "hanmeimei",
"uin": 1179162105
}, {
"face": 522,
"flag": 4719104,
"nick": "lilei",
"uin": 108219029
}]
}
}
以下は、JSON テキストの「ニック」ノードを取得する関数です。
char* getNickName()
{
char* path[20] = { "result", "info", "nick", (char *) 0 };
yajl_val v;
yajl_val node;
node = yajl_tree_parse(buffer, errbuf, sizeof(errbuf));
v = yajl_tree_get(node, path, yajl_t_string);
return YAJL_GET_STRING(v);
}
関数はlileigetNickName
などを返す必要がありますが、実際には常に 0 を返します。
「nick」という名前のノードは 1 つだけではないため、yajl は「nick」を 1 つずつ解析するにはどうすればよいでしょうか。
tom、jimなどの値を取得するにはどうすればよいですか。