Beispiel #1
0
        public static T JsonTo <T>(this string s, T targetTypeDefault)
        {
            var jDic = new JsonDictionaryConverter(s);

            var com = new CommunicationBase();

            foreach (var p in jDic.Dictionary.Keys)
            {
                /*
                 * Get Deeper Level From string Result
                 */

                var val = jDic.Dictionary[p].StringValue;

                var newCom = new CommunicationBase()
                {
                    Name = p, Value = val.ToCurrentType()
                };

                var jDic2 = new JsonDictionaryConverter(jDic.Dictionary[p].StringValue);

                if (jDic2.Dictionary != null && jDic2.Dictionary.Count > 0)
                {
                    newCom = val.JsonTo <CommunicationBase>(newCom);
                }

                com.Add(newCom);
            }



            return(com.To <T>(targetTypeDefault));
        }
        /// <summary>
        /// Creates a dictionary of string/object key value pairs from JsonFormatString
        /// </summary>
        public void CreateDictionary()
        {
            List <String> blocksList = JsonBlockExtractor.GetBlocks(StringValue);

            if (BlockListIsNotNullOrEmpty(blocksList))
            {
                ConvertionDictionary = new Dictionary <string, object>();
                int index = 0;
                for (int i = 0; i < blocksList.Count; i++)
                {
                    String[] firstRestParts = JsonBlockExtractor.FirstRestSplitter(blocksList[i], Splitters);
                    firstRestParts[1] = JsonBlockExtractor.SplitterPlaceHolderCommaReplacer(firstRestParts[1]);
                    if (TheRestPartIsOfTypeString(firstRestParts))
                    {
                        JsonDictionaryConverter sp = new JsonDictionaryConverter(firstRestParts[1]);
                        if (sp.ConvertionDictionary == null)
                        {
                            if (FirstPartIsNotEmpty(firstRestParts))
                            {
                                ConvertionDictionary.Add(firstRestParts[0], JsonBlockExtractor.ConvertObjectValueToItsNativeType(firstRestParts[1])); // Why Do We Convert One More Time?
                            }
                            else
                            {
                                ConvertionDictionary.Add("#Key" + index++, JsonBlockExtractor.ConvertObjectValueToItsNativeType(firstRestParts[1]));// Why Do We Convert One More Time?
                            }
                        }
                        else
                        {
                            if (FirstPartIsNotEmpty(firstRestParts))
                            {
                                ConvertionDictionary.Add(firstRestParts[0], sp);
                            }
                            else
                            {
                                ConvertionDictionary.Add("#Key" + index++, sp);
                            }
                        }
                    }
                    else
                    {
                        if (FirstPartIsNotEmpty(firstRestParts))
                        {
                            ConvertionDictionary.Add(firstRestParts[0], JsonBlockExtractor.ConvertObjectValueToItsNativeType(firstRestParts[1]));
                        }
                        else
                        {
                            ConvertionDictionary.Add("#Key" + index++, JsonBlockExtractor.ConvertObjectValueToItsNativeType(firstRestParts[1]));
                        }
                    }
                }
            }
            else
            {
                ConvertionDictionary = null;
            }
        }
        public String CreateJsonFormatString(Dictionary <string, object> settingsDictionary)
        {
            if (settingsDictionary == null)
            {
                StringValue = string.Empty; return("{}");
            }
            string result = string.Empty;

            foreach (string key in settingsDictionary.Keys)
            {
                try
                {
                    Dictionary <string, object> tempDic = (Dictionary <string, object>)settingsDictionary[key];
                    result +=
                        JsonBlockExtractor.Splitters[0] +
                        JsonDictionaryConverter.GetKey(key, Splitters[0]) +
                        CreateJsonFormatString(tempDic);
                }
                catch
                {
                    try
                    {
                        object[] subData = (object[])settingsDictionary[key];
                        string   _result = "";
                        for (int i = 0; i < subData.Length; i++)
                        {
                            _result += JsonBlockExtractor.Splitters[0] + subData[i].ToString();
                        }
                        result +=
                            JsonBlockExtractor.Splitters[0] +
                            JsonDictionaryConverter.GetKey(key, Splitters[0]) +
                            "{" + JsonBlockExtractor.SplitterPlaceHolderReplacer(_result.Substring(1)) + "}";
                    }
                    catch
                    {
                        result +=
                            JsonBlockExtractor.Splitters[0] +
                            JsonDictionaryConverter.GetKey(key, Splitters[0]) +
                            JsonBlockExtractor.SplitterPlaceHolderReplacer(settingsDictionary[key].ToString());
                    }
                }
            }
            if (result == string.Empty)
            {
                return(string.Empty);
            }
            return("{" + JsonBlockExtractor.SplitterPlaceHolderCommaReplacer(result.Substring(1)) + "}");
        }
        private JsonDictionray GetOptimaizedDictionary(Dictionary <string, Object> datas)
        {
            JsonDictionray op = new JsonDictionray();

            if (datas != null)
            {
                foreach (var data in datas)
                {
                    if (data.Value.GetType() == typeof(string) && data.Value.ToString().Length > 0 && data.Value.ToString().First() == '{' && data.Value.ToString().Last() == '}')
                    {
                        try
                        {
                            JsonDictionaryConverter convert = new JsonDictionaryConverter(data.Value.ToString());
                            JsonDictionray          op1     = GetOptimaizedDictionary(convert.ConvertionDictionary);
                            op1.StringValue = data.Value.ToString();
                            op1.Value       = convert.ConvertionDictionary;

                            op.Add(data.Key, op1);
                        }
                        catch
                        {
                            op.Add(data.Key, new JsonDictionray()
                            {
                                StringValue = data.Value.ToString(), Value = data.Value
                            });
                        }
                    }
                    else if (data.Value.GetType() == typeof(JsonDictionaryConverter))
                    {
                        JsonDictionray op1 = GetOptimaizedDictionary(((JsonDictionaryConverter)data.Value).ConvertionDictionary);
                        op1.StringValue = data.Value.ToString();
                        op1.Value       = ((JsonDictionaryConverter)data.Value).ConvertionDictionary;
                        op.Add(data.Key, op1);
                    }
                    else
                    {
                        op.Add(data.Key, new JsonDictionray()
                        {
                            StringValue = data.Value.ToString(), Value = data.Value
                        });
                    }
                }
            }
            return(op);
        }