最近换工作 从客户端转到Web端 第一个任务就是去页面上抓取数据 用到的是JSON 因为json的格式有点怪 所以 就在JSON反序列化上面 花了一点时间
首先用到的工具是http://www.newtonsoft.com/json
然后 根据JSON创建对应的对象类
下面分三种JSON形式
Demo1:
json:{"id":"1","name":"aaa1","work":"aaa2"}
这个是最常见的json格式
对象类:
1 public class worker 2 { 3 public string id { get; set; } 4 5 public string name { get; set; } 6 7 public string work { get; set; } 8 }
输出:
1 string jsonStr="...."; //json 2 var x = JsonConvert.DeserializeObject<worker>(jsonStr); 3 return x.name+"|"+x.work;
Demo2:
json:[{"id":"1","name":"aaa1","work":"aaa2"},{"id":"2","name":"bbb1","work":"bbb2"},{"id":"3","name":"ccc1","work":"ccc2"}]
这个是带数组的json格式
对象类:
1 public class worker 2 { 3 public string id { get; set; } 4 public string name { get; set; } 5 public string work { get; set; } 6 }
输出:
1 string jsonStr="...": 2 List<worker> lst = JsonConvert.DeserializeObject<List<worker>>(jsonStr); 3 4 for(int i=0;i<jsonStr.Count;i++) 5 { 6 if(lst[i].id=="1") 7 return lst[i].name; 8 }
Demo3:
json:[{"Department":{"Leader":"x1","number":"10"},"worker":[{"id":"1","name":"aaa1","work":"aaa2"},{"id":"2","name":"bbb1","work":"bbb2"},{"id":"3","name":"ccc1","work":"ccc2"}]},{"Department":{"Leader":"x2","number":"20"},"worker":[{"id":"4","name":"ddd1","work":"ddd2"},{"id":"5","name":"eee1","work":"eee2"},{"id":"6","name":"fff1","work":"fff2"}]}]
这是个多层嵌套并且带数组的json格式
对象类:
public class Company { public string Department { get; set; } public worker[] WorkerInfo{ get; set; } //这里注意这个worker类是个数组 } public class worker { public string id {get; set;} public string name {get; set;} public string work {get; set;} }
输出:
Company[] c = JsonConvert.DeserializeObject<Company[]>(jsonStr); foreach(Compant c1 in c) { Department d =c1.Department; WorkerInfo[] wi=c1.WorkerInfo; string leader=d.leader; foreach(WorkerInfo wi1 in wi) { string name=wi1.name; return name+leader; } }
时间: 2024-09-30 16:14:24