Heyo Matthias, had some time to read this a.m. but couldn't find the Get method you referred to.
I saw these in v8.h under class Object V8EXPORT Local<Value> Get(Handle<Value> key); V8EXPORT Local<Value> Get(uint32_t index); is there a transform from string or char * to Handle<Value> key I'm missing? String::New(buf) and for keys is there a special string? String::NewSymbol(buf) https://groups.google.com/forum/#!msg/v8-users/AXnMijKMIxs/Kt0x9K81rlgJ I'm calling Get from s where Local<Object> s = sValue->ToObject(); no need to respond if you're busy. I'll keep poking around the docs until I have a handle on the right types On Thu, Jun 21, 2012 at 7:55 AM, Mark Essel <[email protected]> wrote: > thanks again. Much appreciate the intro to json objects in v8 > > On Jun 21, 2012, at 6:11 AM, Matthias Ernst <[email protected]> wrote: > >> On Thu, Jun 21, 2012 at 12:03 PM, Mark Essel <[email protected]> wrote: >>> Thanks for calling it out Matthias. Assume it works for nested properties: >>> >>>> obj_handle->Get(propertyName)->Get(propertyName) >> >> Almost. Get is defined in Object, but returns a Handle<Value>. >> So you need to test (value_handle->IsObject()) and cast >> (value_handle.As<Object>). >> >> Handle<Value> v = ... parse json ... >> for (const string& property_name : path) { >> if (!v->IsObject()) { >> v = v8::Undefined(); >> break; >> } >> v = (v.As<Object>)->Get(property_name); >> } >> >> or somesuch. >> >>> >>> I was hoping for a nested map of maps >>> obj[pname1][pname2][pname3] >>> >>> >>> On Jun 21, 2012, at 5:47 AM, Matthias Ernst <[email protected]> wrote: >>> >>>> On Thu, Jun 21, 2012 at 12:49 AM, Mark Essel <[email protected]> wrote: >>>>> Just wanted to say thanks for asking this question Guilherme. I know have >>>>> access to a straight forward json parser for my native module. >>>>> when walking the jsonObject that results from the parsing do you loop over >>>>> properties to find the keys of interest or is there a rapid/hashlike >>>>> lookup >>>>> available? >>>> >>>> You're using it already: obj_handle->Get(propertyName) >>>> >>>>> >>>>> ie >>>>> Handle<Value> parseJson(Handle<Value> jsonString) { >>>>> HandleScope scope; >>>>> >>>>> Handle<Context> context = Context::GetCurrent(); >>>>> Handle<Object> global = context->Global(); >>>>> >>>>> Handle<Object> JSON = global->Get(String::New("JSON"))->ToObject(); >>>>> Handle<Function> JSON_parse = >>>>> Handle<Function>::Cast(JSON->Get(String::New("parse"))); >>>>> >>>>> // return JSON.parse.apply(JSON, jsonString); >>>>> return scope.Close(JSON_parse->Call(JSON, 1, &jsonString)); >>>>> } >>>>> >>>>> then on the returned Handle<Value> obj >>>>> >>>>> Local<Array> propertyNames = obj->GetPropertyNames(); >>>>> for (int i=0;i < propertyNames->Length();++i) { >>>>> // check if propertyName matches one I'm interested in >>>>> } >>>>> >>>>> or recursively walk the json tree >>>>> Handle<Value> findMatchingValue(const string &key, Handle<Value> obj) { >>>>> HandleScope scope; >>>>> Handle<Value> rval; >>>>> Local<Array> propertyNames = obj->GetPropertyNames(); >>>>> for (int i=0;i < propertyNames->Length();++i) { >>>>> String::Utf8Value name = properNames->Get(i); >>>>> if (name == *obj) { // check if propertyName matches one I'm >>>>> interested in, not sure this will compile/function as desired >>>>> rval = currentValue; >>>>> } >>>>> // if value type is an object or has children, gotta figure how to >>>>> do this >>>>> rval = findMatchingValue(key,value) >>>>> } >>>>> } >>>>> >>>>> >>>>> >>>>> >>>>> On Sunday, June 10, 2012 5:30:10 PM UTC-4, Guilherme Silva wrote: >>>>>> >>>>>> Thanks everybody for your replies! I want to create a Script Manager that >>>>>> encapsulates V8 and abstracts both js from json files ;). >>>>> >>>>> -- >>>>> v8-users mailing list >>>>> [email protected] >>>>> http://groups.google.com/group/v8-users >>>> >>>> -- >>>> v8-users mailing list >>>> [email protected] >>>> http://groups.google.com/group/v8-users >>> >>> -- >>> v8-users mailing list >>> [email protected] >>> http://groups.google.com/group/v8-users >> >> -- >> v8-users mailing list >> [email protected] >> http://groups.google.com/group/v8-users -- v8-users mailing list [email protected] http://groups.google.com/group/v8-users
