具有此代码:
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”);
如何在obj中插入新对象?无论我多么努力地插入一个嵌套对象,它都不会起作用。崩溃或未插入。
{
“核心价值”,
“ key2”:“值”,
“ newObj”:{
“ newKey”:“值”
}
}
答案 0 :(得分:1)
我将以下代码放入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_*
将一个值压入堆栈。