本文介绍了C#对Json进行序列化和反序列化的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
一、Json简介
Json(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于JS的一个子集。 Json采用完全独立于语言的文本格式。这使得Json成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成。
Json简单来说就是JS中的对象和数组,所以Json也存在两种结构:对象、数组。
Json对象:Json对象定义在花括号“{}”内,以Key:value键值对的形式存放数据,多个数据使用分号“;”分割。
二、序列化
1 | Object obj = Serialization.JsonToObject<Object>(strJson); |
三、反序列化
1 | strJson = Serialization.ObjectToJSON(obj); |
四、工具类
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | public static class Serialization { public static T JsonToObject<T>( string jsonText) { DataContractJsonSerializer dataContractJsonSerializer = new DataContractJsonSerializer( typeof (T)); MemoryStream memoryStream = new MemoryStream(Encoding.UTF8.GetBytes(jsonText)); T result = (T)(( object )dataContractJsonSerializer.ReadObject(memoryStream)); memoryStream.Dispose(); return result; } public static string ObjectToJSON<T>(T obj) { DataContractJsonSerializer dataContractJsonSerializer = new DataContractJsonSerializer( typeof (T)); string result = string .Empty; using (MemoryStream memoryStream = new MemoryStream()) { dataContractJsonSerializer.WriteObject(memoryStream, obj); memoryStream.Position = 0L; using (StreamReader streamReader = new StreamReader(memoryStream)) { result = streamReader.ReadToEnd(); } } return result; } } |
JSONStrToList
自定义模型
1 2 3 4 5 | public class Obj { public string Name { get ; set ; } public double Price { get ; set ; } } |
JSONStrToList
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | //json转对象、数组, 反序列化 public static void JSONStringToList() { //json格式字符串 string JsonStr = "{Name:'苹果',Price:5.5}" ; JavaScriptSerializer Serializer = new JavaScriptSerializer(); //json字符串转为对象, 反序列化 Obj obj = Serializer.Deserialize<Obj>(JsonStr); Console.Write(obj.Name + ":" + obj.Price + "\r\n" ); //json格式字符串 string JsonStrs = "[{Name:'苹果',Price:5.5},{Name:'橘子',Price:2.5},{Name:'柿子',Price:16}]" ; JavaScriptSerializer Serializers = new JavaScriptSerializer(); //json字符串转为数组对象, 反序列化 List<Obj> objs = Serializers.Deserialize<List<Obj>>(JsonStrs); foreach (var item in objs) { Console.Write(item.Name + ":" + item.Price + "\r\n" ); } } |
StrTosJSON
1 2 3 4 5 6 7 8 9 10 11 12 13 | public static JObject strToJson( string jsonText) { jsonText = "{\"shenzheng\":\"深圳\",\"beijing\":\"北京\",\"shanghai\":[{\"zj1\":\"zj11\",\"zj2\":\"zj22\"},\"zjs\"]}" ; JObject jo = (JObject)JsonConvert.DeserializeObject(jsonText); //或者 //JObject jo = JObject.Parse(jsonText); string zone = jo[ "shenzheng" ].ToString(); //输出 "深圳" string zone_en = jo[ "shanghai" ].ToString(); //输出 "[{"zj1":"zj11","zj2":"zj22"},"zjs"]" string zj1 = jo[ "shanghai" ][1].ToString(); //输出 "zjs" Console.WriteLine(jo); return jo; } |
到此这篇关于C#对Json进行序列化和反序列化的文章就介绍到这了。
转自:微点阅读 https://www.weidianyuedu.com