国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - ASP.NET教程 - asp.net JSON 序列化技術分析

asp.net JSON 序列化技術分析

2019-08-30 09:17asp.net之家 ASP.NET教程

很多人看到的實例都是通過MS AJAX進行PageMethod的調用,但因為近兩年微軟在做ASP.NET與jQuery方面的合作實驗,我們其實也可以通過jQuery進行PageMethod的調用。

在ASP.NET 3.5開始,.NET平臺下共支持兩種序列化方式: 

復制代碼代碼如下:


1.DataContractSerializer 
2.JavascriptSerializer 


前者主要是根據數據契約(DataContract)進行序列化,通過如下定義的數據契約: 
代碼 

復制代碼代碼如下:


<DataMember()> _ 
Public Class Model 
<DataMember()> Public Property PropertyA As String 
<DataMember()> Public Property PropertyB As String 
<IgnoreDataMember()> Public Property PropertyC As String 
End Class 


其中會根據<DataMember>和<IgnoreDataMember>進行屬性是否序列化的判斷。 
根據數據契約序列化是有缺點的,它的缺點在于在數據類定義之初就需要對屬性是否進行序列化進行判定,對于在各處使用的數據模型(Data Model)可能會導致需要全部指定為DataMember,而將無用的屬性還有帶有默認值(例如Nothing或Null)的屬性也同樣進行序列化;二是,序列化不能使用屬性別名,在業務中定義的名稱可能過長,而如果不能指定屬性別名就會浪費帶寬,導致服務器端與客戶端之間的通信變慢。 
PageMethod是使用JSON序列化技術的最佳使用場景,在頁面實現異步調用(AJAX調用),而不用把所有邏輯都寫在服務中,UI方面的業務邏輯判斷處理可以寫在PageMethod中。在畫面插入如下ScriptManager聲明并指定EnablePageMethods為True即可將PageMethod打開。 
<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true"> 
</asp:ScriptManager> 
很多人看到的實例都是通過MS AJAX進行PageMethod的調用,但因為近兩年微軟在做ASP.NET與jQuery方面的合作實驗,我們其實也可以通過jQuery進行PageMethod的調用。但jQuery的調用方法無法使用GET,只要POST空JSON對象即可實現類GET調用。腳本如下: 

復制代碼代碼如下:


$.ajax({ 
type: "POST", 
url: "Default.aspx/GetJSON", 
data: "{}", 
contentType: "application/json; charset=utf-8", 
dataType: "json", 
success: function (msg) { 
alert(msg); 

}); 


PageMethod生命方法如下: 

復制代碼代碼如下:


<WebMethod()> _ 
Public Shared Function GetJSON() As String 
Dim list As New List(Of Model) 
For index As Integer = 0 To 1000 
Dim m_JSON As New Model With {.PropertyA = "Hello", .PropertyB = "World"} 
list.Add(m_JSON) 
Next 
Dim str As String = JSONHelper.Serialize(list) 
Return str 
End Function 
[code] 
其中Model類定義如下: 
[code] 
<DataContract()> _ 
Public Class Model 
<DataMember(EmitdefaultValue:=False, IsRequired:=False, Name:="A")> Public Property PropertyA As String 
<DataMember(EmitdefaultValue:=False, IsRequired:=False, Name:="B")> Public Property PropertyB As String 
<DataMember(EmitdefaultValue:=False, IsRequired:=False, Name:="C")> Public Property PropertyC As String 
End Class 


序列化的Model實例結果為: 
{"A":"Hello","B":"World"} 
這里再給大家提供一下網上比較流行的JSON轉換類,使用的是JavascriptSerializer,代碼如下: 

復制代碼代碼如下:


Public Class JSONHelper 
Public Shared Function Serialize(Of T)(ByVal obj As T) As String 
Dim serializer As New System.Runtime.Serialization.Json.DataContractJsonSerializer(obj.GetType()) 
Dim ms As New MemoryStream() 
serializer.WriteObject(ms, obj) 
Dim retVal As String = Encoding.Default.GetString(ms.ToArray()) 
Return retVal 
End Function 
Public Shared Function Deserialize(Of T)(ByVal json As String) As T 
Dim obj As T = Activator.CreateInstance(Of T)() 
Dim ms As New MemoryStream(Encoding.Unicode.GetBytes(json)) 
Dim serializer As New System.Runtime.Serialization.Json.DataContractJsonSerializer(obj.GetType()) 
obj = CType(serializer.ReadObject(ms), T) 
ms.Close() 
Return obj 
End Function 
End Class 

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 在线一级片 | 国产精品色婷婷亚洲综合看 | 91成人精品 | 成人午夜精品一区二区三区 | 黄色一级片看看 | 性色综合| 久久99精品一区二区三区三区 | 淫片在线观看 | 婷婷综合网 | 亚洲精品一区二区网址 | 成人羞羞网站 | 亚洲高清毛片一区二区 | 久久久精品日韩 | 五月天婷婷国产精品 | 国产一区二区三区在线 | 亚洲免费国产视频 | av大全在线观看 | 国产日韩精品一区 | 国产成人综合av | 久久精品无码一区二区日韩av | 久久黄网 | 日韩中文字幕 | 国产在线精品一区 | www.中文字幕.com | 中文字幕亚洲欧美日韩在线不卡 | 久色视频在线观看 | 国产亚洲欧美美 | 精品国产一区二区三区日日嗨 | 81精品国产乱码久久久久久 | 国产成人精品综合 | 欧美日韩国产一区二区三区 | 国产一区久久久 | 精品国产一区二区在线 | 亚洲精品一区二区三区蜜桃下载 | 成人免费毛片aaaaaa片 | 中文视频一区 | 成人午夜在线 | 欧美精三区欧美精三区 | 欧美二三区 | 国产一级小视频 | 日韩精品一区二区在线 |