引言

上篇学习了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", ));
person.Add("Leader", new JObject(new JProperty("Name", "老大"), new JProperty("Age", ), new JProperty("Leader", null)));
Console.WriteLine(person.ToString());
Console.Read();

结果:

JObject.JArray数组

测试

             JArray arr = new JArray();
arr.Add(new JValue());
arr.Add(new JValue());
arr.Add(new JValue());
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"] = ;
Console.WriteLine(jobj.ToString());

结果:

修改同事Tom的年龄:

           JToken colleagues = jobj["Colleagues"];
colleagues[]["Age"] = ;
//修改后再赋给对象
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

最新文章

  1. Java设计模式1:设计模式概论
  2. jQuery & CSS 制作金属质感的选择按钮
  3. CMSIS OS None
  4. UNITY3D与iOS交互解决方案
  5. css的引入方法
  6. hdu 1999 不可摸数 水题。
  7. JavaScript中style.left与offsetLeft的区别
  8. shell之rm -rf的别名设置
  9. 【原创】MapGIS K9 三维二次开发入门
  10. Codeforces 385B Bear and Strings
  11. Java 容器在实际项目开发中应用
  12. linux文件、目录
  13. 动手试试Android Studio插件开发
  14. 微信小程序 canvas 绘制圆形状
  15. 剑指Offer 62. 二叉搜索树的第k个结点 (二叉搜索树)
  16. squid 正向代理 简单配置
  17. 让网站不去请求favicon.ico图标
  18. 回溯-uva129
  19. java基础基础总结----- 随机数(产生四个随机数)
  20. mxnet卷积计算

热门文章

  1. Linux之存储及文件系统管理
  2. Openwrt LuCI模块练习详细步骤
  3. linux硬链接与软链接
  4. [转]后台页面访问权限:页面基类&内置票据认证 使用方法
  5. codeforces 616E Sum of Remainders (数论,找规律)
  6. HDU 4964 Emmet --模拟
  7. UESTC 1014 Shot
  8. C和指针 3.9作用域、存储类型示例
  9. Hadoop和Spark的异同
  10. iOS之block