我有一个用于nodejs的C ++模块。我需要接受一个键/值对作为方法的参数。
var my_map = {'key1':'value1','key2':'value2'};
不确定在此之后该怎么做:
void MyClient::AcceptData(const FunctionCallbackInfo<Value>& args)
{
Isolate* isolate = args.GetIsolate();
if (args.Length() != 1)
{
isolate->ThrowException(v8::Exception::TypeError(String::NewFromUtf8(isolate,
"Usage: Key/Value Map")));
return;
}
// It returns true for args[0]->isObject(), but not for args[0]->IsMap()
// Now what? How do I get a C++ map out of args[0] ?
// What do I cast it into?
}
答案 0 :(得分:0)
如果您确定它是Map对象,可以通过以下代码检索它:
public void loadPopUp(Form from, Form to)
{
to.Tag = from;
to.Show(from);
}
然后使用地图的属性和属性。
希望这有帮助。
答案 1 :(得分:0)
好的,我找到了答案......
v8::Local<v8::Object> obj = args[0]->ToObject();
v8::Local<v8::Array> props = obj->GetPropertyNames();
std::map<std::string, std::string> theMap;
for (unsigned int i = 0; i < props->Length(); i++)
{
char key[1000], value[1000];
props->Get(i)->ToString()->WriteUtf8(key, 1000);
obj->Get(props->Get(i))->ToString()->WriteUtf8(value, 1000);
theMap.insert(std::make_pair(key, value));
}