国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

asp.net JSON 序列化技術分析

2024-07-10 12:42:24
字體:
來源:轉載
供稿:網友
在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實例結果為:
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 大渡口区| 邹平县| 文成县| 易门县| 武陟县| 合阳县| 宜兴市| 台北县| 芷江| 普格县| 黄大仙区| 石景山区| 武陟县| 遂昌县| 池州市| 商水县| 嘉峪关市| 鲁甸县| 马鞍山市| 潞城市| 南涧| 金平| 华安县| 夹江县| 海城市| 秦皇岛市| 梓潼县| 新营市| 庆元县| 苍溪县| 巍山| 大埔区| 横峰县| 老河口市| 大足县| 鄂托克前旗| 含山县| 青川县| 榕江县| 榕江县| 武安市|