含まれている例に示されているような単純な要素を問題なく解析する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 と val を取得する方法がわかりません。
どんな助けでも大歓迎です