澳门新萄京官方网站-www.8455.com-澳门新萄京赌场网址

0入门上学试水篇,JObject转变的选拔形式

2019-06-16 作者:www.8455.com   |   浏览(157)

Linq to JSON是用来操作JSON对象的.可以用于急速查询,修改和创造JSON对象.当JSON对象内容比较复杂,而我们只有必要中间的一小部分数码时,能够设想选拔Linq to JSON来读取和改动部分的多寡而非反系列化全部.

 Linq to JSON是用来操作JSON对象的.能够用于火速查询,修改和创制JSON对象.当JSON对象内容相比复杂,而作者辈无非须求中间的一小部分数量时,可以思索选取Linq to JSON来读取和修改部分的数目而非反类别化全体.

Json to JObject转变的施用方法,jsontojobject转换

Linq to JSON是用来操作JSON对象的.能够用于急速查询,修改和创办JSON对象.当JSON对象内容相比复杂,而作者辈只是须求中间的一小部分数码时,能够思考采纳Linq to JSON来读取和修改部分的数量而非反体系化全体.

二.成立JSON数组和对象

在开展Linq to JSON从前,首先要打听一下用于操作Linq to JSON的类.

类名 说明
JObject
 用于操作JSON对象
JArray
 用语操作JSON数组
JValue
 表示数组中的值
JProperty
 表示对象中的属性,以"key/value"形式
JToken
 用于存放Linq to JSON查询后的结果

 

 

 

 

 

 

 

 

1.创建JSON对象

澳门新萄京官方网站 1

            JObject staff = new JObject();
            staff.Add(new JProperty("Name", "Jack"));
            staff.Add(new JProperty("Age", 33));
            staff.Add(new JProperty("Department", "Personnel Department"));
            staff.Add(new JProperty("Leader", new JObject(new JProperty("Name", "Tom"), new JProperty("Age", 44), new JProperty("Department", "Personnel Department"))));
            Console.WriteLine(staff.ToString());

澳门新萄京官方网站 2

结果:

澳门新萄京官方网站 3

除了,还能透过须臾间措施来获得JObject.JArray类似。

方法   说明
JObject.Parse(string json)
json含有JSON对象的字符串,返回为JObject对象
JObject.FromObject(object o)

o为要转化的对象,返回一个JObject对象

JObject.Load(JsonReader reader)
reader包含着JSON对象的内容,返回一个JObject对象

 

 

 

 

 

 

2.创建JSON数组

澳门新萄京官方网站 4

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

澳门新萄京官方网站 5

结果:

澳门新萄京官方网站 6

三.使用Linq to JSON

澳门新萄京官方网站,1.查询
先是筹算Json字符串,是多少个分包职员和工人基本消息的Json

string json = "{"Name" : "Jack", "Age" : 34, "Colleagues" : [{"Name" : "Tom" , "Age":44},{"Name" : "Abel","Age":29}] }";

①获取该职工的全名

澳门新萄京官方网站 7

            //将json转换为JObject
            JObject jObj = JObject.Parse(json);
            //通过属性名或者索引来访问,仅仅是自己的属性名,而不是所有的
            JToken ageToken =  jObj["Age"];
            Console.WriteLine(ageToken.ToString());

澳门新萄京官方网站 8

结果:

澳门新萄京官方网站 9

②获取该职工同事的富有人名

澳门新萄京官方网站 10

            //将json转换为JObject
            JObject jObj = JObject.Parse(json);
            var names=from staff in jObj["Colleagues"].Children()
                             select (string)staff["Name"];
            foreach (var name in names)
                Console.WriteLine(name);

澳门新萄京官方网站 11

"Children()"能够回来全数数组中的对象

结果:

澳门新萄京官方网站 12

2.修改

①现行反革命我们开掘赢得的json字符串中杰克的年华应有为35

            //将json转换为JObject
            JObject jObj = JObject.Parse(json);
            jObj["Age"] = 35;
            Console.WriteLine(jObj.ToString());

结果:

澳门新萄京官方网站 13

只顾不要通过以下措施来修改:

            JObject jObj = JObject.Parse(json);
            JToken age = jObj["Age"];
            age = 35;

②现行反革命我们开掘Jack的同事汤姆的年纪错了,应该为45

澳门新萄京官方网站 14

            //将json转换为JObject
            JObject jObj = JObject.Parse(json);
            JToken colleagues = jObj["Colleagues"];
            colleagues[0]["Age"] = 45;
            jObj["Colleagues"] = colleagues;//修改后,再赋给对象
            Console.WriteLine(jObj.ToString());

澳门新萄京官方网站 15

结果:

澳门新萄京官方网站 16

3.删除
①现行反革命我们想删除杰克的同事

            JObject jObj = JObject.Parse(json);
            jObj.Remove("Colleagues");//跟的是属性名称
            Console.WriteLine(jObj.ToString());

结果:

澳门新萄京官方网站 17

0入门上学试水篇,JObject转变的选拔形式。②现行反革命我们开掘阿贝l不是杰克的同事,须求从中删除

            JObject jObj = JObject.Parse(json);
            jObj["Colleagues"][1].Remove();
            Console.WriteLine(jObj.ToString());

结果:

澳门新萄京官方网站 18

4.添加
①大家发掘杰克的新闻中少了单位音信,须要大家亟须加多在Age的背后

            //将json转换为JObject
            JObject jObj = JObject.Parse(json);
            jObj["Age"].Parent.AddAfterSelf(new JProperty("Department", "Personnel Department"));
            Console.WriteLine(jObj.ToString());

结果:

澳门新萄京官方网站 19

②现行反革命大家又开掘,杰克集团来了贰个新同事Linda

            //将json转换为JObject
            JObject jObj = JObject.Parse(json);
            JObject linda = new JObject(new JProperty("Name", "Linda"), new JProperty("Age", "23"));
            jObj["Colleagues"].Last.AddAfterSelf(linda);
            Console.WriteLine(jObj.ToString());

结果:

澳门新萄京官方网站 20

四.简化查询语句

使用函数SelectToken能够简化查询语句,具体:
①用到SelectToken来询问名称

            JObject jObj = JObject.Parse(json);
            JToken name = jObj.SelectToken("Name");
            Console.WriteLine(name.ToString());

结果:

澳门新萄京官方网站 21

②选取SelectToken来询问全体同事的名字

            JObject jObj = JObject.Parse(json);
            var names = jObj.SelectToken("Colleagues").Select(p => p["Name"]).ToList();
            foreach (var name in names)
                Console.WriteLine(name.ToString());

结果:

澳门新萄京官方网站 22

③查询最后一名同事的年华

            //将json转换为JObject
            JObject jObj = JObject.Parse(json);
            var age = jObj.SelectToken("Colleagues[1].Age");
            Console.WriteLine(age.ToString());

结果:

澳门新萄京官方网站 23

 

前言

二.创办JSON数组和对象

二.创制JSON数组和目的

FAQ

1.借使Json中的Key是调换的可是结构不改变,怎么着获得所要的内容?

例如: 澳门新萄京官方网站 24

 1 {
 2 "trends":
 3 {
 4 "2013-05-31 14:31":
 5 [
 6 {"name":"我不是谁的偶像",
 7 "query":"我不是谁的偶像",
 8 "amount":"65172",
 9 "delta":"1596"},
10 {"name":"世界无烟日","query":"世界无烟日","amount":"33548","delta":"1105"},
11 {"name":"最萌身高差","query":"最萌身高差","amount":"32089","delta":"1069"},
12 {"name":"中国合伙人","query":"中国合伙人","amount":"25634","delta":"2"},
13 {"name":"exo回归","query":"exo回归","amount":"23275","delta":"321"},
14 {"name":"新一吻定情","query":"新一吻定情","amount":"21506","delta":"283"},
15 {"name":"进击的巨人","query":"进击的巨人","amount":"20358","delta":"46"},
16 {"name":"谁的青春没缺失","query":"谁的青春没缺失","amount":"17441","delta":"581"},
17 {"name":"我爱幸运七","query":"我爱幸运七","amount":"15051","delta":"255"},
18 {"name":"母爱10平方","query":"母爱10平方","amount":"14027","delta":"453"}
19 ]
20 },
21 "as_of":1369981898
22 }

澳门新萄京官方网站 25

个中的"2011-05-31 14:31"是生成的key,怎么着得到其中的"name","query","amount","delta"等新闻吗?
因而Linq能够很轻松地完结:

澳门新萄京官方网站 26

 var jObj = JObject.Parse(jsonString);
            var tends = from c in jObj.First.First.First.First.Children()
                        select JsonConvert.DeserializeObject<Trend>(c.ToString());
public class Trend
{
            public string Name { get; set; }
            public string Query { get; set; }
            public string Amount { get; set; }
            public string Delta { get; set; }
}

to JObject转变的应用方法,jsontojobject调换Linq to JSON是用来操作JSON对象的.能够用来赶快查询,修改和创制JSON对象.当JSON对象内容相比较复杂...

  JSON(JavaScript Object Notation) 是一种轻量级的数据沟通格式。轻便地说,JSON 能够将 JavaScript 对象中象征的一组数据调换为字符串,然后就足以在函数之间轻易地传递那么些字符串,只怕在异步应用程序上校字符串从 Web 客户机传递给劳务器端程序。那个字符串看起来有个别古怪,不过JavaScript 很轻松解释它,而且 JSON 能够象征比"名称 / 值对"更复杂的结构。比方,能够表示数组和头昏眼花的指标,而不止是键和值的简要列表。

在进展Linq to JSON在此之前,首先要打听一下用于操作Linq to JSON的类.

在开展Linq to JSON在此以前,首先要打听一下用来操作Linq to JSON的类.

  它所享有的性状:

类名 说明
JObject
 用于操作JSON对象
JArray
 用语操作JSON数组
JValue
 表示数组中的值
JProperty
 表示对象中的属性,以"key/value"形式
JToken
 用于存放Linq to JSON查询后的结果
类名 说明
JObject
 用于操作JSON对象
JArray
 用语操作JSON数组
JValue
 表示数组中的值
JProperty
 表示对象中的属性,以"key/value"形式
JToken
 用于存放Linq to JSON查询后的结果

  1、Flexible JSON serializer for converting between .NET objects and JSON ——灵活的JSON连串化器用于落到实处.NET对象与JSON的调换

 

 

  2、LINQ to JSON for manually reading and writing JSON ——LINQ to JSON用于手动读写Json

 

 

  3、High performance, faster than .NET's built-in JSON serializers——高质量,比.NET内置的JSON连串化程序速度要更加快

 

 

  4、Writes indented, easy to read JSON ——缩排书写,使得Json易读

 

 

  5、Convert JSON to and from XML——协助JSON 与 XML 二种格式相互转变

 

 

  6、Supports .NET 2 .NET 3.5 .NET 4, Silverlight, Windows Phone and Windows 8——支持.NET2.NET3.5.NET4,Silverlight,Windows Phone和Windows 8

 

 

  在.Net中放到了读写Json的靶子正是 DataContractJsonSerializerJavaScriptSerializer那八个。但是这几个是在.Net 3.5之后才支撑的。并且品质上并不地道。

 

 

  质量相比较图如下:

 

 

  澳门新萄京官方网站 27

1.创建JSON对象

1.创建JSON对象

那是Json.Net 5与.NET内置对象的性情相比图,而后天Json.Net的版本现已到达了Version 6.0.1 ,相信它会有更加好的显现。JSON.NET是开源的,下载地址:,这里有全部的源代码,当然也得以参照 这里。

澳门新萄京官方网站 28

            JObject staff = new JObject();
            staff.Add(new JProperty("Name", "Jack"));
            staff.Add(new JProperty("Age", 33));
            staff.Add(new JProperty("Department", "Personnel Department"));
            staff.Add(new JProperty("Leader", new JObject(new JProperty("Name", "Tom"), new JProperty("Age", 44), new JProperty("Department", "Personnel Department"))));
            Console.WriteLine(staff.ToString());

理当如此通过VS进入Nuget管理包也能够开始展览下载Json.Net的顺序包

            JObject staff = new JObject();
            staff.Add(new JProperty("Name", "Jack"));
            staff.Add(new JProperty("Age", 33));
            staff.Add(new JProperty("Department", "Personnel Department"));
            staff.Add(new JProperty("Leader", new JObject(new JProperty("Name", "Tom"), new JProperty("Age", 44), new JProperty("Department", "Personnel Department"))));
            Console.WriteLine(staff.ToString());

 

澳门新萄京官方网站 29

澳门新萄京官方网站 30

结果:

 

结果:

澳门新萄京官方网站 31

下边大家来大概的通超过实际例进行最先摸底JSON.NET。

澳门新萄京官方网站 32

除开,还能通过眨眼间间措施来获取JObject.JArray类似。

1、系列化四个目的为json字符串。

而外,还足以经过眨眼间间方法来收获JObject.JArray类似。

方法   说明
JObject.Parse(string json)
json含有JSON对象的字符串,返回为JObject对象
JObject.FromObject(object o)

o为要转化的对象,返回一个JObject对象

JObject.Load(JsonReader reader)
reader包含着JSON对象的内容,返回一个JObject对象

2、然后再将字符串反系列化为目的。

方法   说明
JObject.Parse(string json)
json含有JSON对象的字符串,返回为JObject对象
JObject.FromObject(object o)

o为要转化的对象,返回一个JObject对象

JObject.Load(JsonReader reader)
reader包含着JSON对象的内容,返回一个JObject对象

 

3、JSON与XML之间的互转。

 

 

4、……当然还会有任何格式的改造,大家不时不开始展览比方,前面包车型地铁稿子会对此打开相比详细的叙述。

 

 

Serialize an Object——种类化七个对象

 

 

先是定义二个实体类对象

 

 

    public class Account
    {
        public string Email { get; set; }
        public bool Active { get; set; }
        public DateTime CreatedDate { get; set; }
        public IList<string> Roles { get; set; }
    }

 

 

实例化实体类,然后开展系列化为Json字符串

 

2.创建JSON数组

            Account account = new Account()
            {
                Email = "aehyok@vip.qq.com",
                Active = true,
                CreatedDate = new DateTime(2014, 3, 27, 0, 0, 0, DateTimeKind.Utc),
                Roles = new List<string>{"aehyok","Kris" }
            };
            string json = JsonConvert.SerializeObject(account, Formatting.Indented);

2.创建JSON数组

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

获得的json字符串结果为

澳门新萄京官方网站 33

 

{
  "Email": "aehyok@vip.qq.com",
  "Active": true,
  "CreatedDate": "2014-03-27T00:00:00Z",
  "Roles": [
    "aehyok",
    "Kris"
  ]
}
            JArray arr = new JArray();
            arr.Add(new JValue(1));
            arr.Add(new JValue(2));
            arr.Add(new JValue(3));
            Console.WriteLine(arr.ToString());

结果:

Deserialize an Object——反体系化多少个对象

澳门新萄京官方网站 34

澳门新萄京官方网站 35

接轨应用方面包车型大巴实体类

结果:

三.使用Linq to JSON

后日是先定义贰个Json的字符串,大家也能够将方不熟悉成的Json字符串进行简要的改动,然后举办反连串化管理

澳门新萄京官方网站 36

1.查询
率先计划Json字符串,是贰个分包职员和工人基本音讯的Json

            string json = @"{
              'Email': 'aehyok@vip.qq.com',
              'Active': true,
              'CreatedDate': '2014-03-27T00:00:00Z',
              'Roles': [
                'aehyok',
                'Kris'
              ]
            }";
            Account account = JsonConvert.DeserializeObject<Account>(json);

三.使用Linq to JSON

string json = "{"Name" : "Jack", "Age" : 34, "Colleagues" : [{"Name" : "Tom" , "Age":44},{"Name" : "Abel","Age":29}] }";

透过调整获得的数目为

1.查询
首先准备Json字符串,是二个富含职员和工人基本音信的Json

 

澳门新萄京官方网站 37

string json = "{"Name" : "Jack", "Age" : 34, "Colleagues" : [{"Name" : "Tom" , "Age":44},{"Name" : "Abel","Age":29}] }";

①收获该职员和工人的真名

Convert JSON to XML——将JSON转换为XML

①获得该职员和工人的全名

           //将json转换为JObject
            JObject jObj = JObject.Parse(json);
            //通过属性名或者索引来访问,仅仅是自己的属性名,而不是所有的
            JToken ageToken =  jObj["Age"];
            Console.WriteLine(ageToken.ToString());

第一如故定义三个Json字符串,然后对其展开改变

澳门新萄京官方网站 38

 

            string json = @"{
               '@Id': 1,
               'Email': 'aehyok@viq.qq.com',
               'Active': true,
               'CreatedDate': '2014-01-20T00:00:00Z',
               'Roles': [
                 'Kris',
                 'aehyok'
               ],
              'Team': {
                '@Id': 2,
                'Name': 'Software Developers',
                'Description': 'Creators of fine software products and services.'
              }
            }";
            XNode node = JsonConvert.DeserializeXNode(json, "Root");
            //将json转换为JObject
            JObject jObj = JObject.Parse(json);
            //通过属性名或者索引来访问,仅仅是自己的属性名,而不是所有的
            JToken ageToken =  jObj["Age"];
            Console.WriteLine(ageToken.ToString());

结果:

转移结果为

澳门新萄京官方网站 39

澳门新萄京官方网站 40

澳门新萄京官方网站 41

结果:

②获取该职工同事的持有人名

Convert XML to JSON——将XML转换为JSON

澳门新萄京官方网站 42

            //将json转换为JObject
            JObject jObj = JObject.Parse(json);
            var names=from staff in jObj["Colleagues"].Children()
                             select (string)staff["Name"];
            foreach (var name in names)
                Console.WriteLine(name);

当今正是内需先定义三个轻巧的XML字符串,然后对其进展转换管理

②获取该职工同事的具备人名

 

            string xml = @"<?xml version='1.0' standalone='no'?>
             <root>
               <person id='1'>
               <name>aehyok</name>
               <url>http://www.google.com</url>
               </person>
               <person id='2'>
               <name>Kris</name>
               <url>http://www.baidu.com</url>
              </person>
            </root>";

            XmlDocument doc = new XmlDocument();
            doc.LoadXml(xml);

            string json = JsonConvert.SerializeXmlNode(doc);

澳门新萄京官方网站 43

"Children()"能够回到全数数组中的对象

因而调节和测试获得的结果为

            //将json转换为JObject
            JObject jObj = JObject.Parse(json);
            var names=from staff in jObj["Colleagues"].Children()
                             select (string)staff["Name"];
            foreach (var name in names)
                Console.WriteLine(name);

结果:

澳门新萄京官方网站 44

澳门新萄京官方网站 45

澳门新萄京官方网站 46

任何职能简单介绍

"Children()"可以回到全数数组中的对象

2.修改

1、Linq to JSON是用来操作JSON对象的。能够用来快速查询、修改、删除和开创JSON对象。当JSON对象内容相比复杂,而大家只有需求中间的一小部分数目时,能够设想使用Linq to JSON来读取和退换部分的数目而非反系列化全体。

结果:

①现行反革命大家开采赢得的json字符串中杰克的年龄应当为35

2、Json.Net不仅仅支持连串化和反种类化对象,还援助XML和JSON之间的转换。它支持的数据类型与JSON之间的转移,举个例子:DataSet、DataTable、Entity Framework和NHibernate、Collection、Dictionary、Dynamic等等,一大半的数据类型基本都支持。

澳门新萄京官方网站 47

           //将json转换为JObject
            JObject jObj = JObject.Parse(json);
            jObj["Age"] = 35;
            Console.WriteLine(jObj.ToString());

3、JSON.NET协理BSON数据的连串化和反连串化。

2.修改

 

BSON(Binary Serialized Document Format)是一系列json的一种二进制方式的仓库储存格式,简称Binary JSON,它和JSON同样,帮助内嵌的文书档案对象和数组对象,但是BSON有JSON未有的有的数据类型,如Date和BinData类型。

①现行反革命大家发掘赢得的json字符串中杰克的岁数应当为35

结果:

 4、JSON Schema 用于描述JSON数据的构造和项目。就好像DTD与XML的关系。

            //将json转换为JObject
            JObject jObj = JObject.Parse(json);
            jObj["Age"] = 35;
            Console.WriteLine(jObj.ToString());

澳门新萄京官方网站 48

  这段时间笔者询问了这般多的效率。不问可知,它对于部分如何为空管理、日期格式调控、忽略属性调换等等的一些配置管理,都做的百般准确,有关详细介绍会在继续学习之后,进行总计记录介绍。

结果:

在意不要通过以下格局来修改:

 

澳门新萄京官方网站 49

            JObject jObj = JObject.Parse(json);
            JToken age = jObj["Age"];
            age = 35;

日语小贴士

小心不要通过以下方法来修改:

 

1、get out of here。——滚蛋。

            JObject jObj = JObject.Parse(json);
            JToken age = jObj["Age"];
            age = 35;

②现行反革命我们开采杰克的同事Tom的岁数错了,应该为45

2、none of your business。 ——关你屁事。

②现行反革命我们发掘杰克的同事汤姆的年纪错了,应该为45

             //将json转换为JObject
            JObject jObj = JObject.Parse(json);
            JToken colleagues = jObj["Colleagues"];
            colleagues[0]["Age"] = 45;
            jObj["Colleagues"] = colleagues;//修改后,再赋给对象
            Console.WriteLine(jObj.ToString());

3、I can't follow your step。——笔者跟不上你的音频了。

澳门新萄京官方网站 50

 

4、what price of this book?==How much is this book?

            //将json转换为JObject
            JObject jObj = JObject.Parse(json);
            JToken colleagues = jObj["Colleagues"];
            colleagues[0]["Age"] = 45;
            jObj["Colleagues"] = colleagues;//修改后,再赋给对象
            Console.WriteLine(jObj.ToString());

结果:

作者:aehyok

澳门新萄京官方网站 51

澳门新萄京官方网站 52

出处:

结果:

3.删除
①现行反革命大家想删除杰克的同事

感激您的翻阅,倘让你对本人的博客所描述的内容有意思味,那无妨点个推荐吧,谢谢支持:-O。

澳门新萄京官方网站 53

            JObject jObj = JObject.Parse(json);
            jObj.Remove("Colleagues");//跟的是属性名称
            Console.WriteLine(jObj.ToString());

 

3.删除
①现行反革命大家想删除杰克的同事

 

            JObject jObj = JObject.Parse(json);
            jObj.Remove("Colleagues");//跟的是属性名称
            Console.WriteLine(jObj.ToString());

 

结果:

结果:

澳门新萄京官方网站 54

澳门新萄京官方网站 55

②现行反革命大家发掘Abel不是杰克的同事,须求从中删除

②现行反革命我们发掘阿贝l不是杰克的同事,要求从中删除

            JObject jObj = JObject.Parse(json);
            jObj["Colleagues"][1].Remove();
            Console.WriteLine(jObj.ToString());
            JObject jObj = JObject.Parse(json);
            jObj["Colleagues"][1].Remove();
            Console.WriteLine(jObj.ToString());

结果:

 

澳门新萄京官方网站 56

结果:

4.添加
①我们开采杰克的音讯中少了单位新闻,必要我们亟须增多在Age的末尾

澳门新萄京官方网站 57

            //将json转换为JObject
            JObject jObj = JObject.Parse(json);
            jObj["Age"].Parent.AddAfterSelf(new JProperty("Department", "Personnel Department"));
            Console.WriteLine(jObj.ToString());

4.添加
①大家开采杰克的消息中少了机构新闻,须求大家无法不增添在Age的后面

结果:

            //将json转换为JObject
            JObject jObj = JObject.Parse(json);
            jObj["Age"].Parent.AddAfterSelf(new JProperty("Department", "Personnel Department"));
            Console.WriteLine(jObj.ToString());

澳门新萄京官方网站 58

 

②现行反革命我们又发掘,杰克公司来了贰个新同事Linda

结果:

            //将json转换为JObject
            JObject jObj = JObject.Parse(json);
            JObject linda = new JObject(new JProperty("Name", "Linda"), new JProperty("Age", "23"));
            jObj["Colleagues"].Last.AddAfterSelf(linda);
            Console.WriteLine(jObj.ToString());

澳门新萄京官方网站 59

结果:

②现行我们又开采,杰克公司来了叁个新同事Linda

澳门新萄京官方网站 60

            //将json转换为JObject
            JObject jObj = JObject.Parse(json);
            JObject linda = new JObject(new JProperty("Name", "Linda"), new JProperty("Age", "23"));
            jObj["Colleagues"].Last.AddAfterSelf(linda);
            Console.WriteLine(jObj.ToString());

四.简化查询语句

 

使用函数SelectToken能够简化查询语句,具体:
①运用SelectToken来询问名称

结果:

            JObject jObj = JObject.Parse(json);
            JToken name = jObj.SelectToken("Name");
            Console.WriteLine(name.ToString());

澳门新萄京官方网站 61

结果:

四.简化查询语句

澳门新萄京官方网站 62

采纳函数SelectToken能够简化查询语句,具体:
①利用SelectToken来查询名称

②运用SelectToken来询问全体同事的名字

            JObject jObj = JObject.Parse(json);
            JToken name = jObj.SelectToken("Name");
            Console.WriteLine(name.ToString());
            JObject jObj = JObject.Parse(json);
            var names = jObj.SelectToken("Colleagues").Select(p => p["Name"]).ToList();
            foreach (var name in names)
                Console.WriteLine(name.ToString());

 

结果:

 

澳门新萄京官方网站 63

结果:

③询问最终一名同事的岁数

澳门新萄京官方网站 64

            //将json转换为JObject
            JObject jObj = JObject.Parse(json);
            var age = jObj.SelectToken("Colleagues[1].Age");
            Console.WriteLine(age.ToString());

②运用SelectToken来查询全部同事的名字

结果:

            JObject jObj = JObject.Parse(json);
            var names = jObj.SelectToken("Colleagues").Select(p => p["Name"]).ToList();
            foreach (var name in names)
                Console.WriteLine(name.ToString());

澳门新萄京官方网站 65

 

 

结果:

FAQ

1.只要Json中的Key是变化的可是结构不改变,怎么着收获所要的内容?

例如:

澳门新萄京官方网站 66

 1 {
 2 "trends":
 3 {
 4 "2013-05-31 14:31":
 5 [
 6 {"name":"我不是谁的偶像",
 7 "query":"我不是谁的偶像",
 8 "amount":"65172",
 9 "delta":"1596"},
10 {"name":"世界无烟日","query":"世界无烟日","amount":"33548","delta":"1105"},
11 {"name":"最萌身高差","query":"最萌身高差","amount":"32089","delta":"1069"},
12 {"name":"中国合伙人","query":"中国合伙人","amount":"25634","delta":"2"},
13 {"name":"exo回归","query":"exo回归","amount":"23275","delta":"321"},
14 {"name":"新一吻定情","query":"新一吻定情","amount":"21506","delta":"283"},
15 {"name":"进击的巨人","query":"进击的巨人","amount":"20358","delta":"46"},
16 {"name":"谁的青春没缺失","query":"谁的青春没缺失","amount":"17441","delta":"581"},
17 {"name":"我爱幸运七","query":"我爱幸运七","amount":"15051","delta":"255"},
18 {"name":"母爱10平方","query":"母爱10平方","amount":"14027","delta":"453"}
19 ]
20 },
21 "as_of":1369981898
22 }

澳门新萄京官方网站 67

里面包车型地铁"贰零壹叁-05-31 14:31"是调换的key,怎么着获取其中的"name","query","amount","delta"等消息吗?
经过Linq能够很简短地产生:

澳门新萄京官方网站 68

 var jObj = JObject.Parse(jsonString);
            var tends = from c in jObj.First.First.First.First.Children()
                        select JsonConvert.DeserializeObject<Trend>(c.ToString());
public class Trend
{
            public string Name { get; set; }
            public string Query { get; set; }
            public string Amount { get; set; }
            public string Delta { get; set; }
}

澳门新萄京官方网站 69

③询问最终一名同事的岁数

            //将json转换为JObject
            JObject jObj = JObject.Parse(json);
            var age = jObj.SelectToken("Colleagues[1].Age");
            Console.WriteLine(age.ToString());

 

结果:

澳门新萄京官方网站 70

 

FAQ

1.假使Json中的Key是生成的而是结构不变,怎么样赢得所要的内容?

例如:

  { "trends": { "2013-05-31 14:31": [ {"name":"我不是谁的偶像", "query":"我不是谁的偶像", "amount":"65172",
    "delta":"1596"}, {"name":"世界无烟日","query":"世界无烟日","amount":"33548","delta":"1105"},
    {"name":"最萌身高差","query":"最萌身高差","amount":"32089","delta":"1069"}, {"name":"中国合伙人","query":"中国合伙人","amount":"25634","delta":"2"},
    {"name":"exo回归","query":"exo回归","amount":"23275","delta":"321"}, {"name":"新一吻定情","query":"新一吻定情","amount":"21506","delta":"283"},
    {"name":"进击的巨人","query":"进击的巨人","amount":"20358","delta":"46"}, {"name":"谁的青春没缺失","query":"谁的青春没缺失","amount":"17441","delta":"581"},
    {"name":"我爱幸运七","query":"我爱幸运七","amount":"15051","delta":"255"}, {"name":"母爱10平方","query":"母爱10平方","amount":"14027","delta":"453"}
    ] }, "as_of":1369981898 }

 

里面包车型大巴"二零一二-05-31 14:31"是浮动的key,如何获得当中的"name","query","amount","delta"等音信呢?
经过Linq可以很简短地形成:

 var jObj = JObject.Parse(jsonString);
            var tends = from c in jObj.First.First.First.First.Children()
                        select JsonConvert.DeserializeObject<Trend>(c.ToString());
public class Trend
{
            public string Name { get; set; }
            public string Query { get; set; }
            public string Amount { get; set; }
            public string Delta { get; set; }
}

 

本文由澳门新萄京官方网站发布于www.8455.com,转载请注明出处:0入门上学试水篇,JObject转变的选拔形式

关键词: