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); }