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

首頁 > 編程 > C# > 正文

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

2019-10-29 21:37:19
字體:
來源:轉載
供稿:網友

這篇文章主要介紹了C#中Json字符串的各種應用類實例講解的相關資料,需要的朋友可以參考下

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

 

 
  1. public class Person 
  2. public Person() 
  3. public Person(string Name, string Sex, int Age, string Address, PersonCharacter Character) 
  4. this.Name = Name; 
  5. this.Sex = Sex; 
  6. this.Age = Age; 
  7. this.Address = Address; 
  8. this.Character = Character; 
  9. public string Name { get; set; } 
  10. public string Sex { get; set; } 
  11. public int Age { get; set; } 
  12. public string Address { get; set; } 
  13. public PersonCharacter Character { get; set; } 
  14. public class PersonCharacter 
  15. public string Daode { get; set; } 
  16. public string Wenhua { get; set; } 
  17. public string Xiuyang { get; set; } 
  18. public void ShowConvert() 
  19. Person person = new Person("lanar""男", 24, "陜西"new PersonCharacter()); 
  20. JsonSerializer serializer = new JsonSerializer(); 
  21. StringWriter sw = new StringWriter(); 
  22. serializer.Serialize(new JsonTextWriter(sw), person ); 
  23. Console.WriteLine(sw.GetStringBuilder().ToString()); 
  24. StringReader sr = new StringReader(@"{""Name"":""ppp"", ""Age"":"12"}"); 
  25. Person p1 = (Project)serializer.Deserialize(new JsonTextReader(sr), typeof(Person)); 
  26. Console.WriteLine(p1.Name+ "=>" + p1.Age); 

2. 契約方式:

使用System.Runtime.Serialization.dll提供的DataContractJsonSerializer或者 JsonReaderWriterFactory實現

 

 
  1. public class Person 
  2. public Person() 
  3. public Person(string Name, string Sex, int Age, string Address, PersonCharacter Character) 
  4. this.Name = Name; 
  5. this.Sex = Sex; 
  6. this.Age = Age; 
  7. this.Address = Address; 
  8. this.Character = Character; 
  9. [DataMember] 
  10. public string Name { get; set; } 
  11. [DataMember] 
  12. public string Sex { get; set; } 
  13. [DataMember] 
  14. public int Age { get; set; } 
  15. [DataMember] 
  16. public string Address { get; set; } 
  17. [DataMember] 
  18. public PersonCharacter Character { get; set; } 
  19. public class PersonCharacter 
  20. public string Daode { get; set; } 
  21. public string Wenhua { get; set; } 
  22. public string Xiuyang { get; set; } 
  23. public void ShowConvert() 
  24. Person person = new Person("許展鵬""男", , "陜西"new PersonCharacter()); 
  25. Person p = new Person() { Name = "四大圣地", Age = , Sex = "男", Character = new PersonCharacter() { Daode="sds", Wenhua="dasd", Xiuyang="zzz"} }; 
  26. DataContractJsonSerializer serializer = new DataContractJsonSerializer(p.GetType()); 
  27. string jsonText; 
  28. try 
  29. using (MemoryStream stream = new MemoryStream()) 
  30. serializer.WriteObject(stream, p); 
  31. jsonText = Encoding.UTF.GetString(stream.ToArray()); 
  32. Console.WriteLine(jsonText); 
  33. using (MemoryStream ms = new MemoryStream(Encoding.UTF.GetBytes(jsonText))) 
  34. DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(Person)); 
  35. Person p = (Person)serializer.ReadObject(ms); 
  36. catch (Exception ex ) 
  37. throw new Exception(ex.Message,ex); 

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

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 滨州市| 景谷| 屏山县| 集贤县| 普洱| 兴城市| 五莲县| 迁西县| 泽州县| 阳谷县| 寿光市| 仙桃市| 左贡县| 高尔夫| 新民市| 邮箱| 马关县| 班戈县| 澜沧| 大方县| 马龙县| 北安市| 桐城市| 宣威市| 青神县| 和田市| 奉化市| 休宁县| 文山县| 扎兰屯市| 玉树县| 邵阳县| 平顺县| 翁牛特旗| 达拉特旗| 辉南县| 洱源县| 库尔勒市| 繁峙县| 大名县| 平远县|