乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      C#--對(duì)象轉(zhuǎn)Json序列化

       昵稱10504424 2013-06-26

      C#--對(duì)象轉(zhuǎn)Json序列化

      前言

        最近在研究Android項(xiàng)目,其中涉及到Android中解析Json數(shù)據(jù)的問(wèn)題,需要模擬網(wǎng)絡(luò)中傳遞Json數(shù)據(jù)的模式,因?yàn)橐郧笆?net的工程師,所以想著從.net的平臺(tái)開(kāi)發(fā)服務(wù),傳遞Json格式的數(shù)據(jù)。那么先來(lái)介紹一些什么是JSON。

       

      JSON

        Json(JavaScript Object Notation) 是一種輕量級(jí)的數(shù)據(jù)交換格式。它基于JS的一個(gè)子集。 Json采用完全獨(dú)立于語(yǔ)言的文本格式。這使得Json成為理想的數(shù)據(jù)交換語(yǔ)言。易于人閱讀和編寫(xiě),同時(shí)也易于機(jī)器解析和生成。

        Json簡(jiǎn)單來(lái)說(shuō)就是JS中的對(duì)象和數(shù)組,所以Json也存在兩種結(jié)構(gòu):對(duì)象、數(shù)組。

       

      Json序列化與反序列化

        對(duì)于.Net而言,從3.5之后就提供了DataContractJsonSerializer類(lèi),需要引用DLL,System.Runtime.Serialization。使用方式很簡(jiǎn)單,需要知道待轉(zhuǎn)換的對(duì)象的類(lèi)型,然后通過(guò)MemoryStream流寫(xiě)入的方式轉(zhuǎn)換。對(duì)于DataContractJsonSerializer對(duì)象而言,序列化和反序列化只需要了解兩個(gè)方法即可,這兩個(gè)方法都具有多放重載,適用于不同的環(huán)境,這兩個(gè)方法是:

        使用DataContractJsonSerializer序列化對(duì)象和反序列化Json都比較簡(jiǎn)單,下面給出示例代碼:

        通過(guò)這個(gè)轉(zhuǎn)換類(lèi),可以對(duì)對(duì)象進(jìn)行序列化成Json和反序列化成對(duì)象。但是存在一個(gè)問(wèn)題,就是對(duì)于集合類(lèi)型的數(shù)據(jù),可以序列化成Json,但是把這個(gè)Json反序列化則會(huì)失敗,我在這里也沒(méi)有找到更好的辦法反序列化集合類(lèi)型的數(shù)據(jù)?,F(xiàn)在就一些常見(jiàn).Net類(lèi)型的數(shù)據(jù)進(jìn)行序列化展示。

        新建一個(gè)獲取數(shù)據(jù)的類(lèi)JsonObject,在其中分別返回一個(gè)Person(id,name,age)對(duì)象、List<Person>對(duì)象、List<string>對(duì)象,List<Dictionary<string, object>>對(duì)象,分別看看序列化后的數(shù)據(jù)。

        JsonObject類(lèi):

      復(fù)制代碼
       1 using System;
       2 using System.Collections.Generic;
       3 using System.Linq;
       4 using System.Web;
       5 
       6 namespace WebDemo.Json
       7 {
       8     static public class JsonObject
       9     {
      10         static public Person getPerson()
      11         {
      12             Person person = new Person();
      13             person.id = 20;
      14             person.name = "slive";
      15             person.age = 24;
      16             return person;
      17         }
      18         static public List<Person> getPersonList()
      19         {
      20             List<Person> personList = new List<Person>();
      21             Person person = new Person();
      22             person.id = 20;
      23             person.name = "slive";
      24             person.age = 24;
      25             Person person2 = new Person();
      26             person2.id = 30;
      27             person2.name = "jack";
      28             person2.age = 34;
      29             Person person3 = new Person();
      30             person3.id = 40;
      31             person3.name = "damon";
      32             person3.age = 54;
      33             personList.Add(person);
      34             personList.Add(person2);
      35             personList.Add(person3);
      36             return personList;
      37         }
      38         static public List<string> getStringList()
      39         {
      40             List<string> stringlist = new List<string>();
      41             stringlist.Add("jack");
      42             stringlist.Add("dick");
      43             stringlist.Add("sean");
      44             return stringlist;
      45         }
      46         static public List<Dictionary<string,object>> getDicList()
      47         {
      48             List<Dictionary<string, object>> dicList = new List<Dictionary<string, object>>();
      49             Dictionary<string, object> dic1 = new Dictionary<string, object>();
      50             dic1.Add("id", 17);
      51             dic1.Add("name", "jerry");
      52             dic1.Add("age", 24);
      53             Dictionary<string, object> dic2 = new Dictionary<string, object>();
      54             dic2.Add("id", 18);
      55             dic2.Add("name", "meimei");
      56             dic2.Add("age", 23);
      57             Dictionary<string, object> dic3 = new Dictionary<string, object>();
      58             dic3.Add("id", 19);
      59             dic3.Add("name", "damon");
      60             dic3.Add("age", 28);
      61             dicList.Add(dic1);
      62             dicList.Add(dic2);
      63             dicList.Add(dic3);
      64             return dicList;
      65         }
      66     }
      67 }
      復(fù)制代碼

        分別對(duì)JsonObject返回的數(shù)據(jù)進(jìn)行序列化,可以看到結(jié)果:

      總結(jié)

        最近一直在研究Android開(kāi)發(fā),所以涉及到Json的解析問(wèn)題,才會(huì)想著找找對(duì)于Json對(duì)象的序列化問(wèn)題。Json作為一個(gè)獨(dú)立于語(yǔ)言的文本,使用什么語(yǔ)言并不重要,這里只是需要把數(shù)據(jù)對(duì)象序列化為Json,傳遞給Android客戶端做準(zhǔn)備,雖然這種方式對(duì)于集合的反序列化存在問(wèn)題,但是不影響序列化與數(shù)據(jù)傳遞。

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類(lèi)似文章 更多