Heim >Java >javaLernprogramm >JSON-Serialisierung und Deserialisierung C#-Klasse

JSON-Serialisierung und Deserialisierung C#-Klasse

大家讲道理
大家讲道理Original
2016-11-10 09:28:531641Durchsuche

System.runtime.serialization.dll-Referenz hinzufügen

public static class JsonSerializer  
    {  
        private static ITracing _tracing = TracingManager.GetTracing(typeof(JsonSerializer));  
   
   
        /// <summary>  
        /// 将指定对象序列化为 JavaScript 对象表示法 (JSON) 数据,并将生成的 JSON 写入流中。  
        /// </summary>  
        /// <typeparam name="T">对象类型</typeparam>  
        /// <param name="stream">流对象</param>  
        /// <param name="obj">序列化对象</param>  
        public static void Serialize<T>(Stream stream, T obj)  
        {  
            JsonSerializeProxy<T>.Default.Serialize(stream, obj);  
        }  
   
   
        /// <summary>  
        /// 将指定对象序列化为 JavaScript 对象表示法 (JSON) 数据,并返回对应的字符串。  
        /// </summary>  
        /// <typeparam name="T">对象类型</typeparam>  
        /// <param name="obj">序列化对象</param>  
        /// <returns>JavaScript 对象表示法 (JSON) 字符串</returns>  
        public static string Serialize<T>(T obj)  
        {  
            using (MemoryStream ms = new MemoryStream())  
            {  
                JsonSerializeProxy<T>.Default.Serialize(ms, obj);  
   
   
                string jsonStr = Encoding.UTF8.GetString(ms.ToArray());  
   
   
                _tracing.InfoFmt("{0} json serialize result: {1}", typeof(T).ToString(), jsonStr);  
   
   
                return jsonStr;  
            }  
        }  
   
   
        public static T DeSerialize<T>(string jsonStr)  
        {  
            return JsonSerializeProxy<T>.Default.DeSerialize(jsonStr);  
        }  
    }  
   
   
    public class JsonSerializeProxy<T>  
    {  
        private static readonly JsonSerializeProxy<T> _default = new JsonSerializeProxy<T>();  
        private DataContractJsonSerializer _serializer;  
   
   
        public static JsonSerializeProxy<T> Default  
        {  
            get 
            {  
                return _default;  
            }  
        }  
   
   
        private JsonSerializeProxy()  
        {  
            _serializer = new DataContractJsonSerializer(typeof(T));  
        }  
   
   
        public void Serialize(Stream stream, T obj)  
        {  
            _serializer.WriteObject(stream, obj);  
        }  
   
   
        /// <summary>  
        /// 将JSON字符串反序列化为对象  
        /// </summary>  
        /// <param name="jsonStr">json字符串</param>  
        /// <returns></returns>  
        public T DeSerialize(string jsonStr)  
        {  
            MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonStr));  
            T obj = (T)_serializer.ReadObject(ms);  
            return obj;  
        }  
   
   
    }


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn