C#中Json转换主要使⽤的⼏种⽅法!
这篇主要介绍2、4。第三种⽅法使⽤的⽐较局限,所以我没有深⼊学习。第⼆种⽅法
我使⽤⽐较多的⽅式,这个⽅法是.NET内置的,使⽤起来⽐较⽅便A、利⽤serializer获取json的泛型对象
利⽤Dictionary string JsonData = “xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx”;JavaScriptSerializer serializer = new JavaScriptSerializer(); Dictionary 当然还有很多其他数据类型,所以要灵活运⽤转换。 object[] jsonInnerObj = (object[])serializer.DeserializeObject(jsonList);//强制类型转化 Dictionary B、利⽤类去接收json对象 public class Info { public List public List 根据json对象的格式,创建类。这⾥需要注意,数组和泛型的区别,数组是[123,123,123]类型的数据,⽽泛型是[{“a”:”a”,”b”:”b”},{“a”:”a”,”b”:”b”},{“a”:”a”,”b”:”b”}]类型的数据。 泛型如果向继续进⾏读取,那么还需要针对⾥⾯的数据再次创建⼀个类与之对应。之后在控制页⾯中使⽤ string json = form[\"TextArea1\"]; JavaScriptSerializer js = new JavaScriptSerializer();//实例化⼀个能够序列化数据的类Info list = js.Deserialize List List C、反序列化 反序列化较为简单,如果是泛型,那么直接存⼊⼀个键值之后对应泛型即可,c#会⾃动转存为json格式。 return Json(new { TotalItem = totalItem, Page = page, TotalPage = pageCountInt, List = _viewModel.InfoListVM }, JsonRequestBehavior.AllowGet); 第四种⽅法、⽐较通⽤,⽽且可以使⽤linq的,所以⽐较推荐! 通常可以使⽤JObject, JsonReader, JsonWriter处理。这种⽅式最通⽤,最灵活,也可以随时修改。4.2 详细内容 4.2.0 添加命名空间:using Newtonsoft.Json;4.2.1 使⽤JsonReader读Json字符串 string jsonText = @\"{\"\"input\"\" : \"\"value\"\ JsonReader reader = new JsonTextReader(new StringReader(jsonText));while (reader.Read()){ Console.WriteLine(reader.TokenType + \"\\\" + reader.ValueType + \"\\\" + reader.Value+\"\\r\\n\");} Console.ReadKey(); 4.2.2 使⽤JsonWriter写字符串 StringWriter sw = new StringWriter(); JsonWriter writer = new JsonTextWriter(sw);writer.WriteStartObject(); writer.WritePropertyName(\"input\");writer.WriteValue(\"value\"); writer.WritePropertyName(\"output\");writer.WriteValue(\"result\");writer.WriteEndObject();writer.Flush(); string jsonText2 = sw.GetStringBuilder().ToString();Console.WriteLine(jsonText2);Console.ReadKey(); 4.2.3 使⽤JObject读写字符串 4.2.3.1 添加命名空间:using Newtonsoft.Json.Linq; JObject jo = JObject.Parse(jsonText); string[] values = jo.Properties().Select(item => item.Value.ToString()).ToArray();4.2.4 使⽤JsonSerializer读写对象(基于JsonWriter与JsonReader)4.2.4.1数组型数据 string jsonArrayText1 = \"[{'a':'a1','b':'b1'},{'a':'a2','b':'b2'}]\"; JArray ja = (JArray)JsonConvert.DeserializeObject(jsonArrayText1);string ja1a = ja[1][\"a\"].ToString();//或者 JObject o = (JObject)ja[1];string oa = o[\"a\"].ToString(); 4.2.4.2嵌套格式 string jsonText3 = \"{\\\"beijing\\\":{\\\"zone\\\":\\\"海淀\\\JObject jo1 = (JObject)JsonConvert.DeserializeObject(jsonText3);string zone = jo1[\"beijing\"][\"zone\"].ToString(); string zone_en = jo1[\"beijing\"][\"zone_en\"].ToString(); 4.2.4.3 ⾃定义使⽤1.辅助类 class Project{ public string Input { get; set; }public string Output { get; set; }} 2.使⽤ Project p = new Project() { Input = \"stone\ JsonSerializer serializer = new JsonSerializer(); StringWriter sw1 = new StringWriter(); serializer.Serialize(new JsonTextWriter(sw), p); Console.WriteLine(sw.GetStringBuilder().ToString()); StringReader sr = new StringReader(@\"{\"\"Input\"\":\"\"stone\"\ Project p1 = (Project)serializer.Deserialize(new JsonTextReader(sr), typeof(Project)); Console.WriteLine(p1.Input + \"=>\" + p1.Output); Console.ReadKey(); 因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- niushuan.com 版权所有 赣ICP备2024042780号-2
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务