南京酷得软件-陈朕

JSON 序列化类

using System;
using System.Net;
using System.IO;
using System.Runtime.Serialization.Json;
using System.Text;

namespace SFiresoft.Util
{
    /// <summary>
    /// 提供对JSON格式数据的序列化及反序列化操作类
    /// </summary>
    /// <remarks>
    /// 南京酷得软件 sucsy 2011-8-2
    /// </remarks>
    public class JsonSerializer
    {
        #region JSON序列化操作函数
        /// <summary>
        /// 将传入的数据模型对象序列化为Json
        /// </summary>
        /// <param name="item">要序列化为JSON字符串的对象</param>
        /// <returns></returns>
        public static string JsonSerialize<T>(T item)
        {
            DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(T));
            using (MemoryStream ms = new MemoryStream())
            {
                serializer.WriteObject(ms, item);
                StringBuilder sb = new StringBuilder();
                sb.Append(Encoding.UTF8.GetString(ms.ToArray(), 0, ms.ToArray().Length));
                return sb.ToString();
            }
        }
        #endregion

        #region JSON反序列化操作函数【包含对流数据及字符串数据两种数据类型的反序列化重载】
        /// <summary>
        /// 将传入的Json序列化为指定的数据模型
        /// </summary>
        /// <param name="mystream">传入的Json</param>
        /// <returns></returns>
        public static T JsonDeserialize<T>(Stream mystream) where T : class
        {
            MemoryStream memoryStream = new MemoryStream();
            int bytes = 1;
            byte[] temp = new byte[4096];
            while (bytes > 0)
            {
                bytes = mystream.Read(temp, 0, temp.Length);
                memoryStream.Write(temp, 0, bytes);
            }
            DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T));
            memoryStream.Position = 0;
            return (T)ser.ReadObject(memoryStream);
        }

        /// <summary>
        /// 将Json字符串转换为对象
        /// </summary>
        /// <param name="jsonString">JSON字符串</param>
        /// <returns></returns>
        public static T JsonDeserialize<T>(string jsonString) where T : class
        {
            MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonString));
            DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T));
            return (T)ser.ReadObject(ms);
        }
        #endregion
    }
}

南京酷得软件

posted @ 2013-05-25 19:53  南京酷得软件-陈朕  阅读(287)  评论(0编辑  收藏  举报
南京酷得软件-陈朕