麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

C#中Json字符串的各種應用類

2019-11-14 13:54:24
字體:
來源:轉載
供稿:網友

        在程序中任何事物及信息都可以用對象進行描述和承載,除了比較流行的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實現

 1  [DataContract] 2     public class Person 3     { 4         public   Person() 5         { 6         } 7         public Person(string Name, string Sex, int Age, string Address, PersonCharacter Character) 8         { 9             this.Name = Name;10             this.Sex = Sex;11             this.Age = Age;12             this.Address = Address;13             this.Character = Character;14         }15         [DataMember]16         public string Name { get; set; }17 18         [DataMember]19         public string Sex { get; set; }20 21         [DataMember]22         public int  Age { get; set; }23 24            [DataMember]25         public string Address { get; set; }26 27         [DataMember]28         public PersonCharacter Character { get; set; }29 30     }31 32     public class PersonCharacter33     {34 35 36         public string Daode { get; set; }37 38 39         public string Wenhua { get; set; }40 41 42         public string Xiuyang { get; set; }43     }44 45 46         public void ShowConvert()47         {48             Person person = new Person("許展鵬", "", 24, "陜西", new PersonCharacter());49 50             Person p = new Person() { Name = "四大圣地", Age = 22, Sex = "", Character = new PersonCharacter() {  Daode="sds", Wenhua="dasd", Xiuyang="zzz"} };51             DataContractJsonSerializer serializer = new DataContractJsonSerializer(p.GetType());52             string jsonText;53 54             try55             {56                 using (MemoryStream stream = new MemoryStream())57                 {58                     serializer.WriteObject(stream, p);59                     jsonText = Encoding.UTF8.GetString(stream.ToArray());60                     Console.WriteLine(jsonText);61                 }62 63                 using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonText)))64                 {65                     DataContractJsonSerializer serializer1 = new DataContractJsonSerializer(typeof(Person));66                     Person p1 = (Person)serializer1.ReadObject(ms);67 68                 }69             }70             catch (Exception ex )71             {72                 73                 throw new Exception(ex.Message,ex);74             }75         }
View Code

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

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

 

JSON官網:http://www.json.org/json-zh.html

獨立JSON序列化:http://msdn.microsoft.com/zh-cn/library/bb412170.aspx

如何對JSON序列化和反序列化:http://msdn.microsoft.com/zh-cn/library/bb412179.aspx

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 国产日韩a | 免费网站看v片在线a | 成年性羞羞视频免费观看 | 717影院理论午夜伦八戒秦先生 | 亚洲精品有限 | 亚洲精品免费播放 | 欧美极品欧美精品欧美视频 | 一级观看免费完整版视频 | 91精品国产九九九久久久亚洲 | 天天干导航 | 国产午夜精品一区二区三区免费 | 午夜久久电影 | 国产亚洲欧美日韩高清 | 久久久国产电影 | 欧美日韩大片在线观看 | 视频一区 在线 | 91九色视频观看 | 得得啪在线视频 | 成人三区四区 | 在线播放免费人成毛片乱码 | 成人午夜淫片a | 成人午夜免费看 | 久久久久久高清 | 黄色免费播放网站 | 成人激情在线观看 | 天天看天天摸天天操 | 激情视频免费观看 | 久久欧美亚洲另类专区91大神 | 久久久www成人免费精品 | 色域tv | 伊人成人免费视频 | 一级黄色毛片免费 | 黄污在线观看 | 国产视频在线观看一区二区三区 | 日韩视 | 羞羞草视频 | 色999国产 | 最新亚洲国产 | 高清成人在线 | 有色视频在线观看 | 久久中文字幕在线观看 |