[Json.net]Linq to Json
引言
上篇学习了json.net的基本知识,这篇学习linq to json。
上篇文章:[Json.net]快速入门
Linq to Json
Linq to Json是用来快速操作json对象的,包括:查询,修改和创建操作。
创建json数组和对象
一些相关的类:
创建Json对象
引入命名空间:using Newtonsoft.Json.Linq;
1 JObject person = new JObject(); 2 person.Add(new JProperty("Name", "Wolfy")); 3 person.Add(new JProperty("Age", 25)); 4 person.Add("Leader", new JObject(new JProperty("Name", "老大"), new JProperty("Age", 29), new JProperty("Leader", null))); 5 Console.WriteLine(person.ToString()); 6 Console.Read();
结果:
JObject.JArray数组
测试
1 JArray arr = new JArray(); 2 arr.Add(new JValue(1)); 3 arr.Add(new JValue(2)); 4 arr.Add(new JValue(3)); 5 Console.WriteLine(arr.ToString());
结果:
Linq to Json
查询
1 string json = "{\"Name\":\"wolfy\",\"Age\":25,\"Colleagues\":[{\"Name\":\"Tom\",\"Age\":24},{\"Name\":\"Jack\",\"Age\":22}]}"; 2 //将json转换为JObject 3 JObject jobj = JObject.Parse(json); 4 //通过属性名或者索引来访问,仅仅是自己的属性没,而不是所有的 5 JToken ageToken = jobj["Age"]; 6 Console.WriteLine(ageToken.ToString());
结果:
获取该员工的所有同事的所有姓名:
1 var names = from n in jobj["Colleagues"].Children() 2 select (string)n["Name"]; 3 foreach (var item in names) 4 { 5 Console.WriteLine(item); 6 }
结果:
简化查询
查询所有同事的姓名:
1 var names = jobj.SelectToken("Colleagues").Select(p => p["Name"]).ToList(); 2 foreach (var item in names) 3 { 4 Console.WriteLine(item); 5 }
结果:
修改
修改json字符串中名字为Wolfy的年龄:
1 JObject jobj = JObject.Parse(json); 2 jobj["Age"] = 26; 3 Console.WriteLine(jobj.ToString());
结果:
修改同事Tom的年龄:
1 JToken colleagues = jobj["Colleagues"]; 2 colleagues[0]["Age"] = 50; 3 //修改后再赋给对象 4 jobj["Colleagues"] = colleagues; 5 Console.WriteLine(jobj.ToString());
结果:
删除
删除wolfy的同事:
1 //将json转换为JObject 2 JObject jobj = JObject.Parse(json); 3 jobj.Remove("Colleagues"); 4 Console.WriteLine(jobj.ToString());
结果:
总结
Linq to json的学习就到这里,从网上找了一篇文章,自己实践一下,多少还是有收获的。
参考
http://www.360doc.com/content/13/0328/22/11741424_274568564.shtml
-
博客地址:http://www.cnblogs.com/wolf-sun/
博客版权:如果文中有不妥或者错误的地方还望高手的你指出,以免误人子弟。如果觉得本文对你有所帮助不如【推荐】一下!如果你有更好的建议,不如留言一起讨论,共同进步! 再次感谢您耐心的读完本篇文章。