Я поместил следующий код в пример 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_*
помещает значение в стек.