最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#中Json字符串的各種應(yīng)用類實(shí)例講解

 更新時(shí)間:2015年10月16日 13:48:26   投稿:mrr  
這篇文章主要介紹了C#中Json字符串的各種應(yīng)用類實(shí)例講解的相關(guān)資料,需要的朋友可以參考下

在程序中任何事物及信息都可以用對(duì)象進(jìn)行描述和承載,除了比較流行的xml之外,還有一種簡(jiǎn)潔快速處理目標(biāo)信息的形式那就是Json格式。

       首先Json格式有自己固定的格式:例如person這個(gè)對(duì)象就可以簡(jiǎn)單的表示成{"name":"xxxx","age":12,"sex":"男"}形式。

Json格式的描述如下:先用{}包含需要表達(dá)的對(duì)象信息,在{}里使用PropertyName:Value進(jìn)行對(duì)象屬性的描述,同時(shí)Json字符串可以實(shí)現(xiàn)多層嵌套。例如:Json數(shù)據(jù):[{PropertyName:Value,PropertyName:Value},{PropertyName:Value,PropertyName:Value}],Json嵌套格式:{PropertyName:Value,PropertyName:{PropertyName:Value,PropertyName:Value}},理論上可以無(wú)限嵌套,但是這里建議嵌套最好不要超過3層。

       對(duì)Json格式有了了解之后,那我們?nèi)绾卧贑#中使用Json以及將已經(jīng)實(shí)現(xiàn)的對(duì)象與Json聯(lián)系起來。先個(gè)給出幾個(gè)命名空間

using Newtonsoft.Json;
using System.Runtime.Serialization;
using System.ServiceModel;
using Newtonsoft.Json.Linq;
using System.IO;
using System.Runtime.Serialization.Json;

這里需要注意的是 這些命名空間在 .net3.5及以上本版支持,同時(shí)必須在引用中添加 System.Runtime.Serialization.dll的引用。

這里主要使用到的類如下:

JsonSerializer ,StringWriter,StringReader ,JsonWriter,JsonConvert, DataContractJsonSerializer。

1.實(shí)現(xiàn)自定義類與Json進(jìn)行相互轉(zhuǎn)化處理:

 public class Person
  {
    public  Person()
    {
    }
    public Person(string Name, string Sex, int Age, string Address, PersonCharacter Character)
    {
      this.Name = Name;
      this.Sex = Sex;
      this.Age = Age;
      this.Address = Address;
      this.Character = Character;
    }
    public string Name { get; set; }
    public string Sex { get; set; }
    public int Age { get; set; }
    public string Address { get; set; }
    public PersonCharacter Character { get; set; }
  }
  public class PersonCharacter
  {
    public string Daode { get; set; }
    public string Wenhua { get; set; }
    public string Xiuyang { get; set; }
  }
 public void ShowConvert()
    {
      Person person = new Person("lanar", "男", 24, "陜西", new PersonCharacter());
      JsonSerializer serializer = new JsonSerializer();
StringWriter sw = new StringWriter();
serializer.Serialize(new JsonTextWriter(sw), person );
Console.WriteLine(sw.GetStringBuilder().ToString());
StringReader sr = new StringReader(@"{""Name"":""ppp"", ""Age"":"12"}");
Person p1 = (Project)serializer.Deserialize(new JsonTextReader(sr), typeof(Person));
Console.WriteLine(p1.Name+ "=>" + p1.Age);
}

2. 契約方式:使用System.Runtime.Serialization.dll提供的DataContractJsonSerializer或者 JsonReaderWriterFactory實(shí)現(xiàn)

 public class Person
   {
     public  Person()
     {
     }
     public Person(string Name, string Sex, int Age, string Address, PersonCharacter Character)
     {
       this.Name = Name;
       this.Sex = Sex;
       this.Age = Age;
       this.Address = Address;
       this.Character = Character;
     }
     [DataMember]
     public string Name { get; set; }
     [DataMember]
     public string Sex { get; set; }
     [DataMember]
     public int Age { get; set; }
      [DataMember]
     public string Address { get; set; }
     [DataMember]
     public PersonCharacter Character { get; set; }
   }
   public class PersonCharacter
   {
     public string Daode { get; set; }
     public string Wenhua { get; set; }
     public string Xiuyang { get; set; }
   }
     public void ShowConvert()
     {
       Person person = new Person("許展鵬", "男", , "陜西", new PersonCharacter());
       Person p = new Person() { Name = "四大圣地", Age = , Sex = "男", Character = new PersonCharacter() { Daode="sds", Wenhua="dasd", Xiuyang="zzz"} };
       DataContractJsonSerializer serializer = new DataContractJsonSerializer(p.GetType());
       string jsonText;
       try
       {
         using (MemoryStream stream = new MemoryStream())
         {
           serializer.WriteObject(stream, p);
           jsonText = Encoding.UTF.GetString(stream.ToArray());
           Console.WriteLine(jsonText);
         }
         using (MemoryStream ms = new MemoryStream(Encoding.UTF.GetBytes(jsonText)))
         {
           DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(Person));
           Person p = (Person)serializer.ReadObject(ms);
         }
       }
       catch (Exception ex )
       {
         throw new Exception(ex.Message,ex);
       }
     }

使用契約方式必須在類及相關(guān)的屬性添加相關(guān)的契約修飾符: [DataContract], [DataMember] 內(nèi)嵌的對(duì)象內(nèi)部可以不用添加契約修飾符號(hào)的。

     以上只是最常用的應(yīng)用方式,對(duì)于有特殊需求的實(shí)現(xiàn)可以使用第三方實(shí)現(xiàn)的json轉(zhuǎn)換類進(jìn)行處理。在web頁(yè)面可以使用   引入System.Web.Script.Serialization命名空間使用 JavaScriptSerializer類實(shí)現(xiàn)簡(jiǎn)單的序列化。

相關(guān)文章

最新評(píng)論

玛沁县| 呼和浩特市| 视频| 万全县| 金塔县| 武鸣县| 嘉禾县| 洛扎县| 娄底市| 定兴县| 新丰县| 三台县| 天镇县| 河源市| 中西区| 英山县| 藁城市| 盘锦市| 峡江县| 清新县| 永定县| 闽清县| 慈利县| 金乡县| 思南县| 白河县| 乐山市| 威宁| 甘孜| 威信县| 英德市| 青浦区| 定结县| 上栗县| 泗水县| 乳源| 防城港市| 五河县| 汾阳市| 罗江县| 沭阳县|