0
私はbsonでエンコードされたファイルを読むためのC関数を書いています。私は配列のキーを見つけようとしています。私はキーが存在することを知っています、なぜならbsondumpはそれと配列を出力するからです。 "vol"
を検索すると、bson_iter_find()
はfalseを返します。BSONオブジェクトの配列へのキーを見つけることができません
はここで機能だ:
static int nas_initalize(const char *path)
{
int error = 0;
bson_reader_t *reader = bson_reader_new_from_file(path, &bson_error);
if (!reader) {
fprintf (stderr, "ERROR: %d.%d: %s\n",
bson_error.domain, bson_error.code, bson_error.message);
}
super_block = bson_reader_read(reader, NULL);
bson_iter_init(&iter, super_block);
if (bson_iter_find(&iter, "max_dir"))
{
max_dir = bson_iter_int32(&iter);
}
else
{
error = -1;
bson_reader_destroy(reader);
}
if (bson_iter_find(&iter, "raid_lv"))
{
raid_lv = bson_iter_int32(&iter);
}
else
{
error = -1;
bson_reader_destroy(reader);
}
if(bson_iter_find(&iter, "vol"))
{
int count = 0;
bson_iter_recurse(&iter, sub_iter);
while(bson_iter_next(sub_iter) == true)
{
if (bson_iter_find_descendant(&iter, "vol.0", sub_iter))
{
vol[count++] = bson_iter_utf8 (sub_iter, NULL);
}
}
}
else
{
error = -1;
bson_reader_destroy(reader);
}
bson_reader_destroy(reader);
return error;
}