Exemplo n.º 1
0
        private static JToken ToJToken(HashSet <string> values, DupPolicy policy)
        {
            if (values == null)
            {
                throw new ArgumentNullException(nameof(values));
            }
            if (values.Count == 0)
            {
                throw new ArgumentException("the collection of values is empty", nameof(values));
            }
            if (values.Count == 1)
            {
                JToken.FromObject(values.First());
            }
            switch (policy)
            {
            case DupPolicy.OnlyLast:
                return(JToken.FromObject(values.Last()));

            case DupPolicy.OnlyFirst:
                return(JToken.FromObject(values.First()));

            case DupPolicy.Throw:
                throw new InvalidOperationException("the collection contains more than one value");

            case DupPolicy.Array:
                return(JArray.FromObject(values));

            default:
                throw new ArgumentOutOfRangeException(nameof(policy), policy, null);
            }
        }
Exemplo n.º 2
0
        public static JObject ToJObject(this NameValueCollection col,
                                        DupPolicy policy = DupPolicy.OnlyLast)
        {
            var obj = new JObject();

            foreach (var k in col.AllKeys)
            {
                var values = col.GetValues(k).Touch().ToHashSet();
                if (values.Count > 0)
                {
                    obj.Add(k, ToJToken(values, policy));
                }
            }
            return(obj);
        }
Exemplo n.º 3
0
        public static JObject ToJObject(this IEnumerable <KeyValuePair <string, string> > pairs,
                                        DupPolicy policy = DupPolicy.OnlyLast)
        {
            var obj = new JObject();

            foreach (var pair in pairs.GroupBy(m => m.Key))
            {
                var values = pair.Select(m => m.Value).ToHashSet();
                if (values.Count > 0)
                {
                    obj.Add(pair.Key, ToJToken(values, policy));
                }
            }
            return(obj);
        }