public static MqdSessionState FromJson(string json) { if (string.IsNullOrEmpty(json)) { return(null); } try { SessionStateItem item = JsonConvert.DeserializeObject <SessionStateItem>(json); SessionStateItemCollection collections = new SessionStateItemCollection(); SessionStateItemValue objectValue = null; JsonSerializer serializer = new JsonSerializer(); StringReader sr = null; JsonTextReader tReader = null; foreach (KeyValuePair <string, SessionStateItemValue> kvp in item.Dict) { objectValue = kvp.Value as SessionStateItemValue; if (objectValue.Value == null) { collections[kvp.Key] = null; } else { if (!IsValueType(objectValue.Type)) { sr = new StringReader(objectValue.Value.ToString()); tReader = new JsonTextReader(sr); collections[kvp.Key] = serializer.Deserialize(tReader, objectValue.Type); } else { collections[kvp.Key] = objectValue.Value; } } } return(new MqdSessionState(collections, null, item.Timeout)); } catch { return(null); } }
public string ToJson() { if (_sessionItems == null || _sessionItems.Count == 0) { return(null); } Dictionary <string, SessionStateItemValue> dict = new Dictionary <string, SessionStateItemValue>(_sessionItems.Count); NameObjectCollectionBase.KeysCollection keys = _sessionItems.Keys; string key; object objectValue = string.Empty; Type type = null; for (int i = 0; i < keys.Count; i++) { key = keys[i]; objectValue = _sessionItems[key]; if (objectValue != null) { type = objectValue.GetType(); } else { type = typeof(object); } dict.Add(key, new SessionStateItemValue { Value = objectValue, Type = type }); } SessionStateItem item = new SessionStateItem { Dict = dict, Timeout = this._timeout }; return(JsonConvert.SerializeObject(item)); }