实体和json互转(不使用第三方Newtonsoft.Json.dll)

1.实体转Json

需要添加引用:System.ServiceModel.Web 和 System.Runtime.Serialization,然后使用Using:

 

 

/// <summary>
        /// 获取将实体类转换为json数据(目的是为了更快在网页上传递数据)
        /// </summary>
        /// <returns></returns>
        public string GetJsonByModel<T>(T data)
        {
            //将对象序列化json
            // DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(data));
            DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(T));
            //创建存储区为内存流
            System.IO.MemoryStream ms = new MemoryStream();
            //将json字符串写入内存流中
            serializer.WriteObject(ms, data);
            System.IO.StreamReader reader = new StreamReader(ms);
            ms.Position = 0;
            string strRes = reader.ReadToEnd();
            reader.Close();
            ms.Close();
            return strRes;
        }

        public static T GetModelByJson<T>(string input)
        {
            try
            {
                JavaScriptSerializer js = new JavaScriptSerializer();
                return js.Deserialize<T>(input);

                //#if NETFRAMEWORK
                //              JavaScriptSerializer js = new JavaScriptSerializer();
                //                return js.Deserialize<T>(input);
                //#else
                //                return System.Text.Json.JsonSerializer.Deserialize<T>(input);
                //#endif
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
                return default(T);
            }
        }

        public static string GetJsonByObj(object obj)
        {
            JavaScriptSerializer js = new JavaScriptSerializer();
            return js.Serialize(obj);
            //#if NETFRAMEWORK
            //            JavaScriptSerializer js = new JavaScriptSerializer();
            //            return js.Serialize(obj);
            //#else
            //            return System.Text.Json.JsonSerializer.Serialize(obj);
            //#endif
        }

 

posted @ 2020-06-03 17:23  博客YS  阅读(1560)  评论(0编辑  收藏  举报