public DictionaryParameters ConvertFromJson(string json) { Contract.Requires(!string.IsNullOrWhiteSpace(json)); Contract.Ensures(null != Contract.Result <DictionaryParameters>()); Contract.Assert(MAX_RECURSION_COUNT >= recursionCount); recursionCount++; var result = new DictionaryParameters(); var dictionary = JsonConvert.DeserializeObject <Dictionary <string, object> >(json); foreach (var dictionaryitem in dictionary) { if (null == dictionaryitem.Value) { result.Add(dictionaryitem.Key, default(object)); } else if (dictionaryitem.Value is JArray) { var jarrValue = dictionaryitem.Value.ToString(); var jarr = JArray.Parse(jarrValue); var list = new List <object>(); var jlist = jarr.ToList <object>(); foreach (var listitem in jlist) { if (null == listitem) { list.Add(default(object)); } else if (listitem is JArray) { } else if (listitem is JObject) { list.Add(ConvertFromJson(listitem.ToString())); } else { list.Add(listitem.ToString()); } } result.Add(dictionaryitem.Key, list); } else if (dictionaryitem.Value is JObject) { var jobj = ConvertFromJson(dictionaryitem.Value.ToString()); result.Add(dictionaryitem.Key, jobj); } else { result.Add(dictionaryitem.Key, dictionaryitem.Value); } } recursionCount--; return(result); }
public virtual DictionaryParameters Add(DictionaryParameters objectToMerge, bool replaceExistingKeys) { Contract.Requires(null != objectToMerge); Contract.Ensures(this == Contract.Result <DictionaryParameters>()); if (replaceExistingKeys) { foreach (var key in objectToMerge.Keys) { if (!ContainsKey(key)) { continue; } var keyHasBeenRemoved = Remove(key); Contract.Assert(keyHasBeenRemoved); } } else { foreach (var key in Keys) { if (!objectToMerge.ContainsKey(key)) { continue; } var keyHasBeenRemoved = objectToMerge.Remove(key); Contract.Assert(keyHasBeenRemoved); } } var result = Add(objectToMerge); return(result); }
public virtual bool CanAdd(DictionaryParameters objectToMerge) { Contract.Requires(null != objectToMerge); var result = this.Keys.Intersect <string>(objectToMerge.Keys).FirstOrDefault(); return(null == result); }
public virtual DictionaryParameters Add(DictionaryParameters objectToMerge) { Contract.Requires(null != objectToMerge); Contract.Ensures(this == Contract.Result <DictionaryParameters>()); var result = this; objectToMerge.ToList().ForEach(p => result.Add(p.Key, p.Value)); return(result); }