C#中的Json的序列化和反序列化_第1頁(yè)
C#中的Json的序列化和反序列化_第2頁(yè)
C#中的Json的序列化和反序列化_第3頁(yè)
C#中的Json的序列化和反序列化_第4頁(yè)
C#中的Json的序列化和反序列化_第5頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、Json是一種通用的數(shù)據(jù)格式,我們?cè)跀?shù)據(jù)交換的時(shí)候,經(jīng)常會(huì)用到,下面介紹c#中的json序列化和反序列化,當(dāng)然也可用在,silverlight,wpf中。我們?cè)谙旅鎸?shí)例講解如何進(jìn)行Json的序列化和反序列化,本文介紹兩種方案,.net 3.5原生Json操作和J中的Json操作。首先,我們先建立一個(gè)測(cè)試對(duì)象,用來(lái)序列化和反序列化。1234567public class Personpublic int ID get; set; public string Name get; set; public int Age get; set; public DateTime

2、BirthDay get; set; 第一種,利用.Net Framework 3.5中原生的Json操作類庫(kù),特點(diǎn)就是不需要導(dǎo)入第三方類庫(kù),比較方便,速度上一般,而且需要.Net Framework的支持,我們知道現(xiàn)在還有很多服務(wù)器沒(méi)有升級(jí)到.Net Framework 3.5,就用不了這個(gè)了。首先導(dǎo)入下面類庫(kù),并加入下面代碼System.ServiceModelSystem.ServiceModel.Web12345678910111213141516171819202122class Programstatic void Main(string args)/創(chuàng)建測(cè)試對(duì)象Person p

3、= new Person();p.ID = 1;p.Name = 張三;p.Age = 20;p.BirthDay = DateTime.Now.AddYears(-20);/將對(duì)象轉(zhuǎn)化成Json字符串DataContractJsonSerializer ds = new DataContractJsonSerializer(typeof(Person);using (MemoryStream ms = new MemoryStream()ds.WriteObject(ms, p);string output = Encoding.UTF8.GetString(ms.ToArray();Con

4、sole.WriteLine(output);輸出結(jié)果這個(gè)是.Net Framework 3.5原生的序列化方式,接著,我們介紹反序列化方式,還是同樣的加入下面代碼123456789101112131415161718192021222324252627282930313233class Programstatic void Main(string args)/創(chuàng)建測(cè)試對(duì)象Person p = new Person();p.ID = 1;p.Name = 張三;p.Age = 20;p.BirthDay = DateTime.Now.AddYears(-20);/將對(duì)象轉(zhuǎn)化成Json字符串st

5、ring output = string.Empty;DataContractJsonSerializer ds = new DataContractJsonSerializer(typeof(Person);using (MemoryStream ms = new MemoryStream()ds.WriteObject(ms, p);output = Encoding.UTF8.GetString(ms.ToArray();/將Json字符串轉(zhuǎn)化成對(duì)象DataContractJsonSerializer outDs = new DataContractJsonSerializer(type

6、of(Person);using (MemoryStream outMs = new MemoryStream(Encoding.UTF8.GetBytes(output)Person outPerson = outDs.ReadObject(outMs) as Person;Console.WriteLine(ID: + outPerson.ID);Console.WriteLine(Name: + outPerson.Name);Console.WriteLine(Age: + outPerson.Age);Console.WriteLine(Birthday: + outPerson.B

7、irthDay);輸出結(jié)果我們從.Net Framework 3.5原生的Json序列化及反序列化方式中,可以看出,還是相當(dāng)麻煩的。很多網(wǎng)友也會(huì)問(wèn)如果是.Net Framework 2.0該怎么辦呢?下面,我們介紹一個(gè)第三方的Json序列化和反序列化類庫(kù),來(lái)完成上面操作,這個(gè)類庫(kù)是有.Net Framework 2.0的版本的哦,而且這個(gè)類庫(kù)還可以支持xml的序列化和反序列化操作(本文不做講解)。下面看操作。1234567891011121314151617class Programstatic void Main(string args)/創(chuàng)建測(cè)試對(duì)象Person p = new Perso

8、n();p.ID = 1;p.Name = 張三;p.Age = 20;p.BirthDay = DateTime.Now.AddYears(-20);/將對(duì)象轉(zhuǎn)化成Json字符串string output = JsonConvert.SerializeObject(p);Console.WriteLine(output);輸出結(jié)果這個(gè)是Json序列化方法,是不是簡(jiǎn)單了很多呢?1234567891011121314151617181920212223class Programstatic void Main(string args)/創(chuàng)建測(cè)試對(duì)象Person p = new Person();

9、p.ID = 1;p.Name = 張三;p.Age = 20;p.BirthDay = DateTime.Now.AddYears(-20);/將對(duì)象轉(zhuǎn)化成Json字符串string output = JsonConvert.SerializeObject(p);/將Json字符串轉(zhuǎn)化成對(duì)象Person outPerson = JsonConvert.DeserializeObject(output);Console.WriteLine(ID: + outPerson.ID);Console.WriteLine(Name: + outPerson.Name);Console.WriteLine(Age: + outPerson.

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論