導讀:JSON是專門為瀏覽器中的網頁上運行的JavaScript的程式碼而設計的一種資料格式在網站應用中使用JSON的場景越來越多,本文介紹ASP.NET中JSON的序列化和反序列化,主要對JSON的簡單介紹,ASP.NET如何序列化和反序列化的處理,在序列化和反序列化對日期時間,集合,字典的處理。
一,JSON簡介
JSON(JavaScript物件符號,JavaScript的物件表示法)是一種輕量級的資料交換格式。
JSON是“名值對”的集合結構由大括號“{}”中括號“[]”,逗號“,”,冒號。 “:”雙引號'“,”'組成,包含的資料類型有對象,數字,布林值,字串數組,NULL等。
JSON有以下的形式:
物件(物件)是一個無序的「名值對」集合,一個物件以「{」開始,「}」結束每個「名」後跟著一個「:」,多個“名值對”由逗號分隔如:
VAR用戶= {“名”:“張三”,“性別”:“男”,“生日”:“1980年8月8日”}
數組(陣列)是值的有序集合,一個數組以“[”開始,以“]”結束,值之間使用“,”分隔如:
VAR用戶列表= [{“用戶”:{“名”:“張三”,“性別”:“男”,“生日”:“1980年8月8日”}},{“用戶”:{“名” “李四”,“性別”:“男”,“生日”:“1985年5月8日”}}];
字串(字串)是由雙引號包圍的任意數量的的Unicode字元的集合,使用反斜線轉義。
二,對JSON資料進行序列化和反序列化
可以使用DataContractJsonSerializer類別將類型實例序列化為JSON字串,並將JSON字串反序列化為類型實例。 DataContractJsonSerializer在System.Runtime.Serialization.Json命名空間下,.NET Framework 3.5的包含在System.ServiceModel.Web .dll檔案中,需要新增對其的參考; .NET框架4在System.Runtime.Serialization中。
利用DataContractJsonSerializer序列化與反序列化的程式碼:
利用DataContractJsonSerializer序列化與反序列化的程式碼:使用DataContractJsonSerializer序列化與反序列化的程式碼:
1:使用系統;
2:使用System.Collections.Generic;
2:使用System.Collections.Generic;
;
5:使用System.Runtime.Serialization.Json;
6:使用System.IO;
7:使用System.Text;
摘要 8 10: /// JSON序列化與反序列化輔助類 11:/// 摘要> 12:公共類別JsonHelper 13:{// JSON序列化
16:/// 摘要>
17:公共靜態字串JsonSerializer
18:{
19:DataContractsonStract 19: ));
20:MemoryStream的毫秒=新的MemoryStream();
21:ser.WriteObject(MS,T);
22:jsonString = Encoding.UTF8.Toms(
22:jsonString = Encoding.UTF8.Toms) ; 23:ms.Close(); 24:回傳jsonString; 25:} 26: 29:///摘要> 30:公:MemoryStream的毫秒=新的MemoryStream(Encoding.UTF8.GetBytes(jsonString)); 34:T已OBJ =(T)ser.ReadObject(MS); 35:回傳37:}序列化示範:簡單物件的人: 1:公用類別Person 2:{搞定; 組; } 5:}序列化為JSON字串: 1:保護無效的Page_Load(物件發送者, 的Person(); 4:p.Name =「張三」; 5:p.Age = 28; 6: ); 8:回覆於(jsonString); 9:}輸出結果:{「時代」:28日,「名稱」:「張三」}{「時代」:28日,「名稱」:「張三」}序列化示範保護無效的Page_Load(物件寄件人,EventArgs的發送) 2:{ 3:字串jsonString =「{」年齡「:28日,」名稱「:」張三「}」;
4人P = JsonHelper.JsonDeserialize (jsonString);
5:}
運行結果:
ASP.NET中的JSON序列化和反序列化還可以使用的SScript.NET,Web. Script.Serializatioin命名空間下,需引用System.Web.Extensions.dll。也可以使用JSON.NET。
三,JSON序列化和反序列化日期時間的處理
JSON格式不直接支援日期和時間.DateTime值值顯示為「/日期(700000 + 0500)/」形式的JSON字串,其中第一個數字(在提供的範例中為700000)是GMT時區中自1970年1月1日午夜以來按正常時間(非夏令時)經過的毫秒數。該數字可以是負數,以表示之前的時間。範例中包含「0500」的部分可選,它指示該時間屬於當地類型,即它在反序列化時應轉換為本地時區。如果沒有該部分,則會將時間反序列化為UTC。
修改個人類別,新增LastLoginTime:
1:公共類別Person
2:{
5 :公共的DateTime LastLoginTime {搞定; 組; }
6:}
1:人類p =新的Person();
2:p.Name =「張三」; 28;
4:p.LastLoginTime = DateTime.Now;
5:
6:字符串jsonString = JsonHelper.JsonSerializer (P);
序列化結果:
{“時代”:28日,“LastLoginTime”:“ /日期(1294499956278 + 0800) /”,“姓名”:“張三”}
1.在後台使用正則表達式對其替換處理修改JsonHelper:
使用 1: 使用系統;
2:使用System.Collections.Generic;
3:使用System.Linq的;
4:使用的System.Web;
4:使用的System.Web;
..使用System .IO; 7:使用System.Text; 8:使用System.Text.RegularExpressions; 9: 化輔助類 12:/// 摘要> 13:公共類別JsonHelper 14:{ 15:/// /// 摘要> 18:公用靜態字串JsonSerializer
19:{
20:DataContractJsonSerializer SER =新DataContractJsonSerialStream(StreamStreamtype)的運算(T卷);毫秒=新的MemoryStream();
22:ser.WriteObject(MS,T);
23:字串jsonString = Encoding.UTF8.GetString(ms.ToArray());
24:ms.Close(Close. );
25://替換的Json的日期字串
26:串P = @“ \ /日期(( D +) + D + )\ / ”;
27:MatchEvaluator ConvertJsonDateToDateString);
28:正規表示式章=新的正規表示式(P);
29:jsonString = reg.Replace(jsonString,matchEvaluator); 32:
33:///
34:/// JSON反序列化
35:///摘要>
¡
37:{
38://將「YYYY-MM-DD HH:MM:SS」格式的字串轉為「 /日期(1294499956278 + 0800) /」格式
D {4} - d {2} - d {2} S D {2}: D {2}: D {2}”;
40:MatchEvaluator matchEvaluator =新MatchEvaluator(ConvertDateStringToJsonDate);
正式表達式 41:章=新的正規表示式(P);
42:jsonString = reg.Replace(jsonString,matchEvaluator);
43:DataContractJsonSerializer SER =新DataContractJsonSerializer 43:DataContractJsonSerializer SER =新DataContractJsonSerializer(StreamStreamStreamMStreamMem)(StreamcM)cwory5; =新的MemoryStream(Encoding.UTF8.GetBytes(jsonString));
45:T已OBJ =(T)ser.ReadObject(MS);
46:回傳OBJ;
49:/// 50:///將Json的序列化的時間由/日期(1294499956278 + 0800)轉為字串私人靜態字串ConvertJsonDateToDateString(賽米) 53:{ 54:字串結果=的String.Empty; 55:DateTime的DT =新日期時間(1970,1,1970,1,1970,1,1970,1,1970,1,1970,1,1970,1,1970,1,1970,1,1970,1,1970,1,1970,1,1970,1,1970,19);56:DT = dt.AddMilliseconds(long.Parse(m.Groups [1] .value的));
57:DT = dt.ToLocalTime();
57:DT = dt.ToLocalTime();
58:結果= YdtYString( MM-DD HH:MM:SS”);
59:回傳結果;
60:}
61:
62:///
Json的時間 64:/// 摘要> 65:私人靜態字串ConvertDateStringToJsonDate(賽米) 66:{ 67:字符串結果=68.的DT = DateTime.Parse(m.Groups [0] .value的); 69:DT = dt.ToUniversalTime(); 70:時間跨度TS = DT - DateTime.Parse(“1970-01-01 ”); 71:結果=的String.Format(“ \ /日期({0} +0800)\ /”,ts.TotalMilliseconds); 72:回傳結果; }序列化示範: 1:人類p =新的Person(); 2:p.Name =「張三」; 3:p.Age = 28; = DateTime.Now; 5: 6:字串jsonString = JsonHelper.JsonSerializer (P);運算-09一點○○56秒”,“姓名”:“張三”}反序列化演示:JSON字串=“{”年齡“:28日,”LastLoginTime “:”2011-01- 09 00:30:00 “,”名稱“:”張三“}”;P = JsonHelper.JsonDeserialize (JSON);運行結果:在後台替換字串適用範圍比較窄,如果考慮到全球化的有多種語言還會更麻煩。 2.利用JavaScript的處理 1:功能ChangeDateFormat(jsondate){ 2:jsondate = jsondate.replace(“/日期(”,“”).complace(“)/”,”3:若(jsondate.indexOf(「+」)> 0){
4:jsondate = jsondate.substring(0,jsondate.indexOf(「+」));
}. (jsondate.indexOf(「 - 」)> 0){
7:jsondate = jsondate.substring(0,jsondate.indexOf(「 - 」));
8:} 日期 =新的日期(parseInt函數(jsondate,10));
11:無功一個月= date.getMonth()+ 1
12:VAR的currentdate = date.getDate()
13:返回date.getFullYear()+「 - 」+月+「 - 」+的currentdate;
14:}
簡單示範: ChangeDateFormat(“ /日期(1294499956278 + 0800) /”);結果:四,JSON序列化和反序列化集合,字典,數組的處理和數組都表示為數組。
名單
1:名單列表=新的List ()
2:{
3:新年齡的Person(){名稱=“張三”,假稱= 28},
4:新的Person(){名稱=“李四”,年齡= 25}
5:};
6:
人son >>(名單);
序列化結果:
「[{」年齡「:28日,」名稱「:」張三「},{」年齡「:25,」名稱「:」李四「} ]”
字典不能直接用於JSON,字典字典轉化為JSON並不是跟原來的字典格式一致,而是形式以字典的按鍵作為名稱“密鑰”的值,以字典的值作為名稱為“值”的值。如:
1:字典 DIC =新字典();
2:dic.Add(「姓名」,「張三」);
3: dic.Add(“時代”,“28”);
4:
5:字串jsonString = JsonHelper.JsonSerializer >(DIC);
序列化結果:
1:「[{」鍵「:」名稱「,」價值「:」張三「},{」鍵「:」年齡「,」價值「: 「28 」}]「
C#在企業級應用、遊戲開發、移動應用和Web開發中均有廣泛應用。 1)在企業級應用中,C#常用於ASP.NETCore開發WebAPI。 2)在遊戲開發中,C#與Unity引擎結合,實現角色控制等功能。 3)C#支持多態性和異步編程,提高代碼靈活性和應用性能。

C#和.NET適用於Web、桌面和移動開發。 1)在Web開發中,ASP.NETCore支持跨平台開發。 2)桌面開發使用WPF和WinForms,適用於不同需求。 3)移動開發通過Xamarin實現跨平台應用。

C#.NET生態系統提供了豐富的框架和庫,幫助開發者高效構建應用。 1.ASP.NETCore用於構建高性能Web應用,2.EntityFrameworkCore用於數據庫操作。通過理解這些工具的使用和最佳實踐,開發者可以提高應用的質量和性能。

如何將C#.NET應用部署到Azure或AWS?答案是使用AzureAppService和AWSElasticBeanstalk。 1.在Azure上,使用AzureAppService和AzurePipelines自動化部署。 2.在AWS上,使用AmazonElasticBeanstalk和AWSLambda實現部署和無服務器計算。

C#和.NET的結合為開發者提供了強大的編程環境。 1)C#支持多態性和異步編程,2).NET提供跨平台能力和並發處理機制,這使得它們在桌面、Web和移動應用開發中廣泛應用。

.NETFramework是一個軟件框架,C#是一種編程語言。 1..NETFramework提供庫和服務,支持桌面、Web和移動應用開發。 2.C#設計用於.NETFramework,支持現代編程功能。 3..NETFramework通過CLR管理代碼執行,C#代碼編譯成IL後由CLR運行。 4.使用.NETFramework可快速開發應用,C#提供如LINQ的高級功能。 5.常見錯誤包括類型轉換和異步編程死鎖,調試需用VisualStudio工具。

C#是一種由微軟開發的現代、面向對象的編程語言,.NET是微軟提供的開發框架。 C#結合了C 的性能和Java的簡潔性,適用於構建各種應用程序。 .NET框架支持多種語言,提供垃圾回收機制,簡化內存管理。

C#和.NET運行時緊密合作,賦予開發者高效、強大且跨平台的開發能力。 1)C#是一種類型安全且面向對象的編程語言,旨在與.NET框架無縫集成。 2).NET運行時管理C#代碼的執行,提供垃圾回收、類型安全等服務,確保高效和跨平台運行。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具