[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

posted @   wolfy  阅读(3058)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
点击右上角即可分享
微信分享提示