Как создать вставленный объект, используя дуктапе? - PullRequest
0 голосов
/ 27 февраля 2019

Имеют этот код:

auto obj_idx = duk_push_object( ctx );

duk_push_string( ctx, "key" );
duk_push_string( ctx, "value" );
duk_put_prop( ctx, obj_idx );
duk_push_string( ctx, "key2" );
duk_push_string( ctx, "value" );
duk_put_prop( ctx, obj_idx );

duk_put_global_string( ctx, "obj" );

Как вставить новый объект в объект?Как бы я ни старался вставить вложенный объект, он не работает.Сбой или не вставлено.

{
"key": "value",
"key2": "value",
"newObj": {
    "newKey": "value"
}
}

1 Ответ

0 голосов
/ 27 февраля 2019

Я поместил следующий код в пример Duktape hello, и он дал правильный результат:

auto obj_idx = duk_push_object( ctx );

duk_push_string( ctx, "key" );
duk_push_string( ctx, "value" );
duk_put_prop( ctx, obj_idx );
duk_push_string( ctx, "key2" );
duk_push_string( ctx, "value" );
duk_put_prop( ctx, obj_idx );

auto nested_idx = duk_push_object(ctx);
duk_push_int(ctx, 2019);
duk_put_prop_string(ctx, nested_idx, "year");

duk_put_prop_string(ctx, obj_idx, "nested");

duk_put_global_string( ctx, "obj" );

duk_eval_string(ctx, "print(JSON.stringify(obj))");

Важно помнить, что duk_put_prop и duk_put_prop_string принимают одно значение изстек, в то время как duk_push_* помещает значение в стек.

...