将带数组的json反序列化成对象,取到数组的每一个元素值,及取json值
程序员文章站
2022-03-09 14:26:19
...
Json对象和json数组的反序列化方式不同:
先简单介绍一下对象和数组区别:
花括号的是对象,数组不用解释,想获取到数组中每一个元素就得遍历数组:
目的:将类似这样的json数据转为对象,然后获取到红色框和绿色框的值;
新建一个控制台应用程序
一、生成这个Json对应的实体类
将这个json数据复制,然后在Vs里面新建一个类,编辑—>选择性粘贴—>json
并将红色框这里的数组改为List
二、在项目中引用
三、将Jsoon数据反序列化
运行结果:
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这类值
将这个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;
}
运行结果为:
上一篇: javascript如何显示隐藏div
下一篇: jquery中怎么想让一个元素隐藏