-2

有这个代码:

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中插入新对象?无论我多么努力地尝试插入嵌套对象,它都不起作用。要么崩溃,要么没有插入。

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

1 回答 1

2

我将以下代码放入 Duktapehello示例中,它产生了正确的结果:

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_*将一个值压入堆栈。

于 2019-02-27T19:27:31.877 回答