JSON(JavaScript Object Notation)JavaScript對象表示法,它是一種基于文本,獨立于語言的輕量級數(shù)據(jù)交換格式。在現(xiàn)在的通信中,較多的采用JSON數(shù)據(jù)格式,JSON有兩種表示結(jié)構(gòu),對象和數(shù)組,JSON 數(shù)據(jù)的書寫格式是:名稱/值對。
創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),云龍企業(yè)網(wǎng)站建設(shè),云龍品牌網(wǎng)站建設(shè),網(wǎng)站定制,云龍網(wǎng)站建設(shè)報價,網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,云龍網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。
在vs解決方案中以前采用xml樹的形式,組織項目的結(jié)構(gòu)。在新的.net core中,項目的解決方案采用json作為項目的結(jié)構(gòu)說明。
在.net的前后臺數(shù)據(jù)交互中,采用序列化對象為json,前端ajax接受傳輸數(shù)據(jù),反序列化為對象,在頁面對數(shù)據(jù)進(jìn)行渲染。有關(guān)json的相關(guān)內(nèi)容就不再贅述,在.net中序列化的類主要采用DataContractJsonSerializer類。
現(xiàn)在提供一個較為通用的json的序列化和反序列化的通用方法。
1.json的序列化:
////// 將對象序列化為JSON /// ///序列化的類型 /// 需要序列化的對象 ///序列化后的JSON public static string JsonSerializer(T t) { if (t == null) throw new ArgumentNullException("t"); string jsonString; try { var ser = new DataContractJsonSerializer(typeof(T)); var ms = new MemoryStream(); ser.WriteObject(ms, t); jsonString = Encoding.UTF8.GetString(ms.ToArray()); ms.Close(); //替換Json的Date字符串 const string p = @"\\/Date\((\d+)\+\d+\)\\/"; var matchEvaluator = new MatchEvaluator(ConvertJsonDateToDateString); var reg = new System.Text.RegularExpressions.Regex(p); jsonString = reg.Replace(jsonString, matchEvaluator); } catch (Exception er) { throw new Exception(er.Message); } return jsonString; }
2.json的反序列化:
////// 將JSON反序列化為對象 /// public static T JsonDeserialize(string jsonString) { if (string.IsNullOrEmpty(jsonString)) throw new Exception(jsonString); //將"yyyy-MM-dd HH:mm:ss"格式的字符串轉(zhuǎn)為"\/Date(1294499956278+0800)\/"格式 const string p = @"\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2}"; try { var matchEvaluator = new MatchEvaluator(ConvertDateStringToJsonDate); var reg = new System.Text.RegularExpressions.Regex(p); jsonString = reg.Replace(jsonString, matchEvaluator); var ser = new DataContractJsonSerializer(typeof(T)); var ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonString)); var obj = (T)ser.ReadObject(ms); return obj; } catch (Exception ex) { throw new Exception(ex.Message, ex); } }
以上是一個較為簡單的json序列化和反序列化方法。