gpt4 book ai didi

javascript - 在 duktape 中使用 json 对象

转载 作者:太空狗 更新时间:2023-10-29 21:38:02 25 4
gpt4 key购买 nike

各位。我刚刚在我的 C++ 代码中集成了 duktape,这样我就可以使用 javascript。

但我现在无法解决的问题是:如何在 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

想就应该由谁完成工作来提出任何建议!感谢您的宝贵时间:)

最佳答案

您需要使用 duk_json_decode :

char *json = "{\"name\": \"duktape\"}";
duk_push_string(ctx, json);
duk_json_decode(ctx, -1);
duk_pcall(ctx, 1);
duk_pop_2(ctx);

输出:

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);

关于javascript - 在 duktape 中使用 json 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36281265/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com