Aqueduct.Appia.Core.ExpandoHelper.DictionaryToExpando C# (CSharp) Method

DictionaryToExpando() public static method

public static DictionaryToExpando ( object>.IDictionary dictionary ) : System.Dynamic.ExpandoObject
dictionary object>.IDictionary
return System.Dynamic.ExpandoObject
        public static ExpandoObject DictionaryToExpando(IDictionary<string, object> dictionary)
        {
            var expando = new ExpandoObject();
            var expandoDic = (IDictionary<string, object>)expando;

            foreach (var item in dictionary)
            {
                bool alreadyProcessed = false;

                if (item.Value is IDictionary<string, object>)
                {
                    expandoDic.Add(item.Key, DictionaryToExpando((IDictionary<string, object>)item.Value));
                    alreadyProcessed = true;
                }
                else if (item.Value is ICollection)
                {
                    var itemList = new List<object>();
                    foreach (var item2 in (ICollection)item.Value)
                        if (item2 is IDictionary<string, object>)
                            itemList.Add(DictionaryToExpando((IDictionary<string, object>)item2));
                        else
                            itemList.Add(item2);

                    if (itemList.Count > 0)
                    {
                        expandoDic.Add(item.Key, itemList);
                        alreadyProcessed = true;
                    }
                }

                if (!alreadyProcessed)
                    expandoDic.Add(item);
            }

            return expando;
        }

Usage Example

コード例 #1
0
ファイル: JsonHelpers.cs プロジェクト: marto83/Appia
        public static dynamic ParseJsonObject(string json)
        {
            if (string.IsNullOrEmpty(json))
            {
                return(null);
            }

            JavaScriptSerializer ser = new JavaScriptSerializer();
            var dictionary           = ser.Deserialize <IDictionary <string, object> >(json);

            return(ExpandoHelper.DictionaryToExpando(dictionary));
        }