On Thu, Jun 21, 2012 at 6:14 PM, Mark Essel <[email protected]> wrote: > 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)
Right, use v8::String::New(property_name.c_str()) . > > 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 -- v8-users mailing list [email protected] http://groups.google.com/group/v8-users
