C#中Json字符串的各种应用类
??????? 在程序中任何事物及信息都可以用對象進行描述和承載,除了比較流行的xml之外,還有一種簡潔快速處理目標信息的形式那就是Json格式。
?????? 首先Json格式有自己固定的格式:例如person這個對象就可以簡單的表示成{"name":"xxxx","age":12,"sex":"男"}形式。
Json格式的描述如下:先用{}包含需要表達的對象信息,在{}里使用PropertyName:Value進行對象屬性的描述,同時Json字符串可以實現(xiàn)多層嵌套。例如:Json數(shù)據:[{PropertyName:Value,PropertyName:Value},{PropertyName:Value,PropertyName:Value}],Json嵌套格式:{PropertyName:Value,PropertyName:{PropertyName:Value,PropertyName:Value}},理論上可以無限嵌套,但是這里建議嵌套最好不要超過3層。
?????? 對Json格式有了了解之后,那我們如何在C#中使用Json以及將已經實現(xiàn)的對象與Json聯(lián)系起來。先個給出幾個命名空間
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.實現(xiàn)自定義類與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實現(xiàn)
使用契約方式必須在類及相關的屬性添加相關的契約修飾符:?[DataContract],?[DataMember] 內嵌的對象內部可以不用添加契約修飾符號的。
???? 以上只是最常用的應用方式,對于有特殊需求的實現(xiàn)可以使用第三方實現(xiàn)的json轉換類進行處理。在web頁面可以使用?? 引入System.Web.Script.Serialization命名空間使用 JavaScriptSerializer類實現(xiàn)簡單的序列化。
?
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
?
轉載于:https://www.cnblogs.com/xplangren/p/4882501.html
總結
以上是生活随笔為你收集整理的C#中Json字符串的各种应用类的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 必应词典UWP版-开发小结
- 下一篇: 实现事件来回切换