Example #1
0
        public static object ToArray(this JArray array)
        {
            if (array.AllElementsAreOfSameType())
            {
                var type = array[0].Type;
                switch (type)
                {
                case JTokenType.Boolean:
                    return(array.Select(e => e.Value <bool>()).ToArray());

                case JTokenType.Float:
                    return(array.Select(e => e.Value <float>()).ToArray());

                case JTokenType.Integer:
                    return(array.Select(e => e.Value <int>()).ToArray());

                case JTokenType.String:
                    return(array.Select(e => e.Value <string>()).ToArray());

                //case JTokenType.Array:
                //    var firstElement = prop.Values<JToken>().FirstOrDefault();
                //    if (firstElement == null)
                //        throw new Exception("Empty arrays not supported");
                //    var mapped = prop.Values<JToken>().Select(GetPropertyValue).ToArray();
                //    switch (firstElement.Type)
                //    {
                //        case JTokenType.Boolean:
                //            return (object)mapped.Cast<bool>();
                //        case JTokenType.Float:
                //            return mapped.Cast<float>();
                //        case JTokenType.Integer:
                //            return mapped.Cast<int>();
                //        case JTokenType.String:
                //            return mapped.Cast<string>();
                //        default:
                //            throw new Exception("Parameter type not supported");
                //    }
                default:
                    throw new Exception("Parameter type not supported");
                }
            }
            else
            {
                return(array.ToObject <object[]>().Select(ProcessArrayEntry).ToArray());
            }
        }