예제 #1
0
        /// <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);
        }
예제 #2
0
        /// <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);
        }
예제 #3
0
        /// <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);
        }