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

首頁 > 編程 > C# > 正文

C#中Json字符串的各種應用類實例講解

2020-01-24 01:24:41
字體:
來源:轉載
供稿:網友

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

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

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

       對Json格式有了了解之后,那我們如何在C#中使用Json以及將已經實現的對象與Json聯系起來。先個給出幾個命名空間

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

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

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

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

1.實現自定義類與Json進行相互轉化處理:

 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實現

 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);       }     }

使用契約方式必須在類及相關的屬性添加相關的契約修飾符: [DataContract], [DataMember] 內嵌的對象內部可以不用添加契約修飾符號的。

     以上只是最常用的應用方式,對于有特殊需求的實現可以使用第三方實現的json轉換類進行處理。在web頁面可以使用   引入System.Web.Script.Serialization命名空間使用 JavaScriptSerializer類實現簡單的序列化。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 蕉岭县| 万盛区| 成都市| 罗江县| 长丰县| 西宁市| 丹阳市| 深圳市| 大厂| 岗巴县| 宁河县| 宝坻区| 浦县| 巨野县| 泰来县| 安新县| 景宁| 南平市| 津南区| 玉林市| 土默特左旗| 湖南省| 灵璧县| 个旧市| 家居| 齐齐哈尔市| 广平县| 莆田市| 株洲县| 宝兴县| 威宁| 西青区| 壶关县| 农安县| 榆树市| 区。| 陆川县| 内丘县| 沂源县| 汽车| 南川市|