将带数组的json反序列化成对象,取到数组的每一个元素值,及取json值 谁践踏了优雅 2022-05-24 02:49 281阅读 0赞 Json对象和json数组的反序列化方式不同: 先简单介绍一下对象和数组区别: ![这里写图片描述][70] 花括号的是对象,数组不用解释,想获取到数组中每一个元素就得遍历数组: ![这里写图片描述][70 1] 目的:将类似这样的json数据转为对象,然后获取到红色框和绿色框的值; ![这里写图片描述][70 2] 新建一个控制台应用程序 一、生成这个Json对应的实体类 将这个json数据复制,然后在Vs里面新建一个类,编辑—>选择性粘贴—>json 并将红色框这里的数组改为List ![这里写图片描述][70 3] 二、在项目中引用 ![这里写图片描述][70 4] 三、将Jsoon数据反序列化 运行结果: ![这里写图片描述][70 5] demo: public void testJsonToObject() { String jsonStr = "{ \"name\":\"BeJson\",\"url\":\"http://www.bejson.com\",\"links\":[{ \"entityName\":\"Google\",\"shop\":\"http://www.google.com\"},{ \"entityName\":\"Baidu\",\"shop\":\"http://www.baidu.com\"}]}"; System.Web.Script.Serialization.JavaScriptSerializer js = new System.Web.Script.Serialization.JavaScriptSerializer(); Test.TestJsonObject jsonObj = js.Deserialize<Test.TestJsonObject>(jsonStr);//反序列化 if(jsonObj.name== "BeJson") { List<Beer2dFire.Link> linkData = jsonObj.links; foreach (Beer2dFire.Link item in linkData) { String entityName = item.entityName; String shop = item.shop; System.Console.WriteLine("link里面的数据为entityName:" + entityName + ",shop:" + shop); } } } 二: 取到Json中的Json的值即取到下图中的street这类值 ![这里写图片描述][70 6] 将这个Json数据创建一个Json实体类 然后反序列化为对象 public class TestJsonArr { public string name { get; set; } public string url { get; set; } public int page { get; set; } public bool isNonProfit { get; set; } public Address address { get; set; } public List<LinkTwo> links { get; set; } } public class Address { public string street { get; set; } public string city { get; set; } public string country { get; set; } } public class LinkTwo { public string linksName { get; set; } public string linksUrl { get; set; } } 然后在另一个类中写方法: public String testJson() { String jsonStr = "{\"name\":\"BeJson\",\"url\":\"http://www.bejson.com\",\"page\":88,\"isNonProfit\":true,\"address\":{\"street\":\"科技园路.\",\"city\":\"江苏苏州\",\"country\":\"中国\"},\"links\":[{\"linksName\":\"Google\",\"linksUrl\":\"http://www.google.com\"},{\"linksName\":\"Baidu\",\"linksUrl\":\"http://www.baidu.com\"},{\"linksName\":\"SoSo\",\"linksUrl\":\"http://www.SoSo.com\"}]}"; System.Web.Script.Serialization.JavaScriptSerializer js = new System.Web.Script.Serialization.JavaScriptSerializer(); TestJsonArr jsonArr = js.Deserialize<TestJsonArr>(jsonStr); String name = jsonArr.name; String url = jsonArr.url; //adress里面的数据 String street = jsonArr.address.street; String city = jsonArr.address.city; //links里面的数据 List<LinkTwo> linkTow = jsonArr.links; String linkStr = ""; foreach(LinkTwo item in linkTow) { String linksName = item.linksName; String linksUrl = item.linksUrl; linkStr = linksName + "," + linksUrl; } Console.WriteLine("name为:" + name + "------url为:" + url + "------address里面的street为:" + street + ",------" + city + "------links里面的数据为:" + linkStr); Console.WriteLine(); return linkStr; } 运行结果为: ![这里写图片描述][70 7] [70]: /images/20220524/ed2d6ed2f0784e71ac461a988777b2f3.png [70 1]: /images/20220524/f209c2785548485fa97487732f4b8486.png [70 2]: /images/20220524/48983710d16f468ea92f5c5b7209c2eb.png [70 3]: /images/20220524/a39105400cfa40d1b42bd432fdb8f958.png [70 4]: /images/20220524/9434c16cce9c4f619ebb16e0bc66a8d2.png [70 5]: /images/20220524/2c1831d515924307bc144494cfdeb7e6.png [70 6]: /images/20220524/a140adff32184c17bb85a489f74a5448.png [70 7]: /images/20220524/316d2337a68a49c7b8483ac15d551af7.png
还没有评论,来说两句吧...