您的位置:首页 > Web前端 > JavaScript

[Json.net]Linq to Json

2014-04-18 20:38 507 查看

引言

上篇学习了json.net的基本知识,这篇学习linq to json。

上篇文章:[Json.net]快速入门

Linq to Json

Linq to Json是用来快速操作json对象的,包括:查询,修改和创建操作。

创建json数组和对象

一些相关的类:



创建Json对象

引入命名空间:using Newtonsoft.Json.Linq;

JObject person = new JObject();
person.Add(new JProperty("Name", "Wolfy"));
person.Add(new JProperty("Age", 25));
person.Add("Leader", new JObject(new JProperty("Name", "老大"), new JProperty("Age", 29), new JProperty("Leader", null)));
Console.WriteLine(person.ToString());
Console.Read();


结果:



JObject.JArray数组



测试

JArray arr = new JArray();
arr.Add(new JValue(1));
arr.Add(new JValue(2));
arr.Add(new JValue(3));
Console.WriteLine(arr.ToString());


结果:



Linq to Json

查询

string json = "{\"Name\":\"wolfy\",\"Age\":25,\"Colleagues\":[{\"Name\":\"Tom\",\"Age\":24},{\"Name\":\"Jack\",\"Age\":22}]}";
//将json转换为JObject
JObject jobj = JObject.Parse(json);
//通过属性名或者索引来访问,仅仅是自己的属性没,而不是所有的
JToken ageToken = jobj["Age"];
Console.WriteLine(ageToken.ToString());


结果:



获取该员工的所有同事的所有姓名:

var names = from n in jobj["Colleagues"].Children()
select (string)n["Name"];
foreach (var item in names)
{
Console.WriteLine(item);
}


结果:



简化查询

查询所有同事的姓名:

var names = jobj.SelectToken("Colleagues").Select(p => p["Name"]).ToList();
foreach (var item in names)
{
Console.WriteLine(item);
}


结果:



修改

修改json字符串中名字为Wolfy的年龄:

JObject jobj = JObject.Parse(json);
jobj["Age"] = 26;
Console.WriteLine(jobj.ToString());


结果:



修改同事Tom的年龄:

JToken colleagues = jobj["Colleagues"];
colleagues[0]["Age"] = 50;
//修改后再赋给对象
jobj["Colleagues"] = colleagues;
Console.WriteLine(jobj.ToString());


结果:



删除

删除wolfy的同事:

//将json转换为JObject
JObject jobj = JObject.Parse(json);
jobj.Remove("Colleagues");
Console.WriteLine(jobj.ToString());


结果:



总结

Linq to json的学习就到这里,从网上找了一篇文章,自己实践一下,多少还是有收获的。

参考

http://www.360doc.com/content/13/0328/22/11741424_274568564.shtml
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: