/// <summary> /// Десериализует объект из потока. /// </summary> /// <typeparam name="T">Тип объекта.</typeparam> /// <param name="stream">Поток.</param> /// <returns></returns> public static T Deserialize <T>(Stream stream) { if (stream == null) { throw new ArgumentNullException("stream"); } if (!stream.CanRead) { throw new Exception(string.Format("Невозможно десериализовать объект из потока, потому что чтение потока запрещено.")); } byte[] data = new byte[stream.Length]; stream.Read(data, 0, data.Length); string json = Encoding.UTF8.GetString(data); T obj = JsonDataSerializer.GetInstanceJson <T>(json); return(obj); }
/// <summary> /// Сериализует объект в поток. /// </summary> /// <param name="stream">Поток.</param> /// <param name="obj">Объект.</param> /// <param name="serializerType">Тип сериализации.</param> public static void Serialize(Stream stream, object obj, JsonSerializerType serializerType = JsonSerializerType.DataContractJsonSerializer) { if (stream == null) { throw new ArgumentNullException("stream"); } if (obj == null) { throw new ArgumentNullException("obj"); } if (!stream.CanWrite) { throw new Exception(string.Format("Невозможно сериализовать объект в поток, потому что запись в поток запрещена.")); } string json = JsonDataSerializer.SerializeJson(obj, serializerType); byte[] data = Encoding.UTF8.GetBytes(json); stream.Write(data, 0, data.Length); }
/// <summary> /// Сериализует объект в строку в формате Json. /// </summary> /// <param name="obj">Объект.</param> /// <param name="serializerType">Тип сериализации.</param> /// <returns></returns> public static string SerializeJson(object obj, JsonSerializerType serializerType = JsonSerializerType.DataContractJsonSerializer) { if (obj == null) { throw new Exception("obj is null"); } string result = null; if (serializerType == JsonSerializerType.DataContractJsonSerializer) { result = JsonDataSerializer.SerializeJson(obj); } else if (serializerType == JsonSerializerType.JavaScriptSerializer) { JavaScriptSerializer serializer = new JavaScriptSerializer(); serializer.MaxJsonLength = int.MaxValue; result = serializer.Serialize(obj); } return(result); }