public override bool TryGetIndex(GetIndexBinder binder, object[] indexes, out object result)
        {
            int index = (int)indexes[0];

            if (arr != null)
            {
                Type tt = arr[index].GetType();
                if (tt.Name.Equals("JObject"))
                {
                    result = new DynamicJsonObject(JObject.FromObject(arr[index]));
                }

                else if (tt.Name.Equals("JArray"))
                {
                    result = new DynamicJsonObject(JArray.FromObject(arr[index]));
                }

                else
                {
                    result = (JValue)arr[index];
                }
                return(true);
            }
            return(base.TryGetIndex(binder, indexes, out result));
        }
        public override bool TryGetMember(GetMemberBinder binder, out object result)
        {
            if (node != null && node.SelectToken(binder.Name) != null)
            {
                Type tt = node.GetValue(binder.Name).GetType();
                if (tt.Name.Equals("JObject"))
                {
                    result = new DynamicJsonObject(JObject.FromObject(node.Value <JObject>(binder.Name)));
                }
                else if (tt.Name.Equals("JArray"))
                {
                    result = new DynamicJsonObject(JArray.FromObject(node.Value <JArray>(binder.Name)));
                }

                else
                {
                    result = node.Value <JValue>(binder.Name);
                }
                return(true);
            }
            else
            {
                return(base.TryGetMember(binder, out result));
            }
        }
Esempio n. 3
0
        static void dynamicObjectFromJsonString()
        {
            dynamic obj = DynamicJsonObject.parseJSONString(jsonString);

            Console.WriteLine("Person.Name: {0}", obj.person.name);
            Console.WriteLine("Person:{0}", obj.person);
            Console.WriteLine("Movies[0]:{0}", obj.movies[0]);
            Console.WriteLine("Movies[1].name: {0}", obj.movies[1].name);
        }