如何在c v8中解析参数对象

如何在c v8中解析参数对象,第1张

概述我希望通过google v8引擎访问 javascript到我的c函数,并根据我的javascript函数中的参数返回结果. 我的javascript函数如下: var result = MyFc( { 'stringData':'abc', 'numberData':123, 我希望通过Google v8引擎访问 javascript到我的c函数,并根据我的JavaScript函数中的参数返回结果.

我的JavaScript函数如下:

var result = MyFc(                 {                  'stringData':'abc','numberData':123,'arrData':[1,2,3],'objData':{'a':true,'b':false,'c':true},'callback':function(){}                 });

我用了

global->Set(v8::String::New("myFc"),v8::FunctionTemplate::New(MyFc));v8::Handle<v8::Value> MyFc(const v8::Arguments& args) {  obj = args[0]->...  if( obj->stringData != 'abc' ){      //....  }  if( obj->numberData != 123 ){      //....  }  if( obj->arrData[2] != 3 ){      //....  }  if( obj->objData->b == false ){      //....  }  if( obj->callback !='abc' ){      //....  }}

我的问题是如何在c v8中解析参数对象?我想访问参数中对象的所有键值,值可以是数字,字符串,数组,匿名函数或对象.

解决方法 使用v8 :: Value(IsBoolean(),IsArray(),IsObject()等)的类型检查方法,然后使用v8 :: Handle< T> :: Cast(v8 :: Handle< S>)来强制转换args [i]值到相应的类型.

您的代码应如下所示:

if (args[0]->IsArray()) {    Handle<Array> array = Handle<Array>::Cast(arg[0]);    for (int i = 0; i < array->Length(); i++) {       //...    }}if (args[1]->IsObject()) {    Handle<Object> object = Handle<Object>::Cast(args[i]);    Handle<Value> fIEldValue = object->Get(String::New("a"));    Handle<Value> callback = object->Get(String::New("callback"));    if (callback->IsFunction()) {        Handle<Function> fn = Handle<Function>::Cast(callback);    }}
总结

以上是内存溢出为你收集整理的如何在c v8中解析参数对象全部内容,希望文章能够帮你解决如何在c v8中解析参数对象所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1242962.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-06
下一篇2022-06-06

发表评论

登录后才能评论

评论列表(0条)

    保存