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

Reply via email to