Json 시리얼화 및 역시리얼화

7814 단어 json
참조 프로그램 세트: System.Runtime.Serialization;
명령 공간 참조: System.Runtime.Serialization.Json;
public class JsonHelper

{

    /// <summary>

    ///   Json  

    /// </summary>

    /// <typeparam name="T"></typeparam>

    /// <param name="obj"></param>

    /// <returns></returns>

    public static string JsonSerializer<T>(T obj)

    {

        //JavaScriptSerializer serialize = new JavaScriptSerializer();

        //return serialize.Serialize(obj);

        var json = new DataContractJsonSerializer(obj.GetType());

        using (var stream = new MemoryStream())

        {

            json.WriteObject(stream, obj);

            string szJson = Encoding.UTF8.GetString(stream.ToArray());

            return szJson;

        }

    }



    /// <summary>

    ///   Json Model

    /// </summary>

    /// <typeparam name="T"></typeparam>

    /// <param name="szJson"></param>

    /// <returns></returns>

    public static T JsonDeserialize<T>(string szJson)

    {

        T obj = Activator.CreateInstance<T>();

        using (var ms = new MemoryStream(Encoding.UTF8.GetBytes(szJson)))

        {

            var serializer = new DataContractJsonSerializer(obj.GetType());

            return (T)serializer.ReadObject(ms);

        }

    }

}

방식 2: 확장 방법 사용
public static class JsonHelper

{

    /// <summary>

    ///   Json  

    /// </summary>

    /// <typeparam name="T"></typeparam>

    /// <param name="obj"></param>

    /// <returns></returns>

    public static string JsonSerializer<T>(this T obj)

    {

        //JavaScriptSerializer serialize = new JavaScriptSerializer();

        //return serialize.Serialize(obj);

        var json = new DataContractJsonSerializer(obj.GetType());

        using (var stream = new MemoryStream())

        {

            json.WriteObject(stream, obj);

            string szJson = Encoding.UTF8.GetString(stream.ToArray());

            return szJson;

        }

    }



    /// <summary>

    ///   Json Model

    /// </summary>

    /// <typeparam name="T"></typeparam>

    /// <param name="szJson"></param>

    /// <returns></returns>

    public static T JsonDeserialize<T>(this string szJson)

    {

        T obj = Activator.CreateInstance<T>();

        using (var ms = new MemoryStream(Encoding.UTF8.GetBytes(szJson)))

        {

            var serializer = new DataContractJsonSerializer(obj.GetType());

            return (T)serializer.ReadObject(ms);

        }

    }

}

좋은 웹페이지 즐겨찾기