如何使用duktape创建插入的对象?

时间:2019-02-27 18:58:12

标签: c++ duktape

具有此代码:

  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”:“值”
}
}
 

1 个答案:

答案 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_propduk_put_prop_string从堆栈中取出一个值,而duk_push_*将一个值压入堆栈。