C# 對象與JSON字符串互相轉換的幾種方式


 
 

隨着 Rest 風格 API 的應用越來越廣泛,對象與JSON字符串互相轉換的功能也用的越來越多。這里介紹三種方法,期中兩種為DotNet Framework .NET 3.5 及后續版本自帶的 DataContractJsonSerializer、 JavaScriptSerializer,另一種為 Newtonsoft.Json.dll ,我選擇它的原因是因為它支持 DotNet Framework .NET 2.0。

 

方法一、DoNet2.0 需要借助於Newtonsoft.Json.dll

我使用的版本是:Version 10.0.3

 

[csharp]  view plain  copy
 
        // 從一個對象信息生成Json串
        public static string ObjectToJson(object obj)
        {
            return JsonConvert.SerializeObject(obj);
        }
        // 從一個Json串生成對象信息
        public static object JsonToObject(string jsonString, object obj)
        {
            return JsonConvert.DeserializeObject(jsonString, obj.GetType());
        }

  

 

 

方法二、DataContractJsonSerializer

[csharp]  view plain  copy
 
        /// <summary>
        /// Json轉換成對象
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="jsonText"></param>
        /// <returns></returns>
        public static T JsonToObject<T>(string jsonText)
        {
            // Framework 2.0 不支持
            DataContractJsonSerializer s = new DataContractJsonSerializer(typeof(T));
            MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonText));
            T obj = (T)s.ReadObject(ms);
            ms.Dispose();
            return obj;


        }


        /// <summary>
        /// 對象轉換成JSON
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="obj"></param>
        /// <returns></returns>
        public static string ObjectToJSON<T>(T obj)
        {
            // Framework 2.0 不支持
            DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(T));
            string result = string.Empty;
            using (MemoryStream ms = new MemoryStream())
            {
                serializer.WriteObject(ms, obj);
                ms.Position = 0;

                using (StreamReader read = new StreamReader(ms))
                {
                    result = read.ReadToEnd();
                }
            }
            return result;
        }

  

 

[csharp]  view plain  copy
 

 

方法三、JavaScriptSerializer

 

[csharp]  view plain  copy
 
public static void JsonMy(string json)
        {                     
            JavaScriptSerializer js = new JavaScriptSerializer();   //實例化一個能夠序列化數據的類
            ToJsonMy list = js.Deserialize<ToJsonMy>(json);    //將json數據轉化為對象類型並賦值給list
            string result = list.result;
            string res_info = list.res_info;
            string queryorder_info = list.res_info;
        }

        public static void JsonMy4(string json)
        {
            JavaScriptSerializer js = new JavaScriptSerializer();   //實例化一個能夠序列化數據的類
            ToJsonMy3 list = js.Deserialize<ToJsonMy3>(json);    //將json數據轉化為對象類型並賦值給list
            string result = list.result;
            string res_info = list.res_info;
            string order_num = list.queryorder_info.order_num;
            List<orderdetail> orderdetail = list.queryorder_info.orderdetail;
            string CFTUin = orderdetail[0].CFTUin;
            string HotelName = orderdetail[0].HotelName;
            string ListID = orderdetail[1].ListID;
            string State = orderdetail[2].State;
        }

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM