Как мне прочитать массив скриптов в дуктапе?
Я новичок в Duktape и пытаюсь прочитать конфигурацию из файла сценария:
var config =
[
{ ready: true, name: "dev1", on: 8, off: 9 },
{ ready: true, name: "dev2", on: 10, off: 11 },
{ ready: true, name: "dev3", on: 18, off: 21 },
{ ready: true, name: "dev4", on: 13, off: 17 }
];
У duktape есть отличная документация, но я не могу найти ни одного примера того, чего я пытаюсь достичь.
Мне удалось прочитать массив одного измерения. (Не уверен, что это лучший или правильный способ сделать это)
// var one_dim = [ "hello", "world", "single", "dimension", "array" ] ;
void init_one_dimension(void) {
duk_get_prop_string(ctx, -1, "one_dim");
if(duk_is_array(ctx, -1)) {
printf("Found array\n");
duk_enum(ctx, -1, DUK_ENUM_ARRAY_INDICES_ONLY);
while (duk_next(ctx, -1 , 0 )) {
duk_get_prop_index(ctx, -1, 0);
duk_get_prop_string(ctx, -4, duk_get_string(ctx, -1));
printf("%s\n", duk_get_string(ctx, -1));
show_stack(ctx, "STACK");
duk_pop(ctx); // get_prop_string
duk_pop(ctx); // get_prop_index
duk_pop(ctx); // duk_next
}
duk_pop(ctx); // duk_enum
duk_pop(ctx); // duk_get_prop_string
}
}
Многомерные массивы избегают меня. Любая помощь будет оценена.
1 ответ
Объект 'config', который вы видите вверху, - это не многомерный массив, а массив, содержащий словари. Так что с кодом enum, который у вас уже есть, вам просто нужно получить доступ к ключам (ready, name и т. Д.), Как к обычным свойствам объекта.