예제 #1
0
        public static JsonDoc ParseObject(JObject obj, IRequestEncoder encoder)
        {
            var values = new Dictionary <string, object>();

            foreach (var child in obj.Children <JProperty>())
            {
                if (child.Value is JArray)
                {
                    if (child.Value.First is JObject)
                    {
                        var objs = ParseObjectArray(child.Value as JArray, encoder);
                        values.Add(child.Name, objs);
                    }
                    else
                    {
                        var objs = ParseTypeArray <string>(child.Value as JArray, encoder);
                        values.Add(child.Name, objs);
                    }
                }
                else if (child.Value is JObject)
                {
                    values.Add(child.Name, ParseObject(child.Value as JObject, encoder));
                }
                else
                {
                    values.Add(child.Name, (child.Value as JValue).Value);
                }
            }
            return(new JsonDoc(values, encoder));
        }
예제 #2
0
        public static IEnumerable <JsonDoc> ParseObjectArray(JArray objs, IRequestEncoder encoder)
        {
            var responses = new List <JsonDoc>();

            foreach (var child in objs.Children <JObject>())
            {
                responses.Add(ParseObject(child, encoder));
            }
            return(responses);
        }
예제 #3
0
        public static IEnumerable <T> ParseTypeArray <T>(JArray objs, IRequestEncoder encoder)
        {
            var response = new List <T>();

            foreach (var child in objs.Children <JToken>())
            {
                response.Add(child.Value <T>());
            }
            return(response);
        }
예제 #4
0
        public static JsonDoc Parse(string json, IRequestEncoder encoder = null)
        {
            var parsed = JsonConvert.DeserializeObject(json);

            if (parsed is JObject)
            {
                return(ParseObject(parsed as JObject, encoder));
            }
            return(null);
        }
예제 #5
0
 private JsonDoc(Dictionary <string, object> values, IRequestEncoder encoder = null)
 {
     _dict    = values;
     _encoder = encoder;
 }
예제 #6
0
 public JsonDoc(IRequestEncoder encoder = null)
 {
     _dict    = new Dictionary <string, object>();
     _encoder = encoder;
 }
예제 #7
0
        public static T ParseSingleValue <T>(string json, string name, IRequestEncoder encoder = null)
        {
            var doc = Parse(json, encoder);

            return(doc.GetValue <T>(name));
        }