Javascript 在duktape中使用json对象

Javascript 在duktape中使用json对象,javascript,c++,json,duktape,Javascript,C++,Json,Duktape,大家好。我刚刚在我的C++代码中集成了Duk磁带,这样我就可以使用JavaScript了。p> 但我现在无法解决的问题是:如何在javascript中使用json对象 假设我有一些javascript,比如 function hi(person) { print ('hi, ' + person.name ); } 和json对象: { 'name' : 'duktape' } 现在我需要在cpp代码中用这个json的参数调用函数hi duk_eval_string(ctx,

大家好。我刚刚在我的C++代码中集成了Duk磁带,这样我就可以使用JavaScript了。p> 但我现在无法解决的问题是:如何在javascript中使用json对象

假设我有一些javascript,比如

function hi(person) {
    print ('hi, ' + person.name );
}
和json对象:

{
    'name' : 'duktape'
}
现在我需要在cpp代码中用这个json的参数调用函数hi

duk_eval_string(ctx, "function hi(person) {print ('hi, ' + person.name );}");
    duk_push_global_object(ctx);
    duk_get_prop_string(ctx, -1, "hi" ); // pushes function from loaded script to stack

    auto json = "{'name' : 'duktape' }";
    duk_push_string(ctx, json);
    duk_pcall(ctx, 1);
我得到的输出表明,该对象不正确

hi, undefined
想领导的任何建议,谁应该做,让它的工作!感谢您的时间:)

您需要使用:

输出:

hi, duktape
请注意,原始json无效,您需要使用
作为字符串分隔符,而不是

根据实际需要,还可以手动创建对象:

duk_idx_t obj_idx = duk_push_object(ctx);
duk_push_string(ctx, "duktape");
duk_put_prop_string(ctx, obj_idx, "name");
duk_pcall(ctx, 1);
duk_pop(ctx);
duk_idx_t obj_idx = duk_push_object(ctx);
duk_push_string(ctx, "duktape");
duk_put_prop_string(ctx, obj_idx, "name");
duk_pcall(ctx, 1);
duk_pop(ctx);