我的JSON看起来像这样:(我不控制这个数据结构)
{
"Quest":"To seek the Holy Grail",
"FavoriteColor":"Blue",
"Mother":{
"name":"Eve",
"dob":"1/1/1950"
},
"Father":{
"name":"Adam",
"dob":"2/1/1950"
},
"Siblings":[
{
"name":"Abel",
"dob":"1/1/1980"
},
{
"name":"Kain",
"dob":"3/1/1981"
}
]
}
我编写的代码使用Newtonsoft JSON SelectToken
方法查找母亲,父亲和兄弟姐妹的名字并在屏幕上打印出来:
using System;
using Newtonsoft.Json.Linq;
namespace JsonTest
{
class Program
{
const string JSON = @"{
""Quest"":""To seek the Holy Grail"",
""FavoriteColor"":""Blue"",
""Mother"":{
""name"":""Eve"",
""dob"":""1/1/1950""
},
""Father"":{
""name"":""Adam"",
""dob"":""2/1/1950""
},
""Siblings"":[
{
""name"":""Abel"",
""dob"":""1/1/1980""
},
{
""name"":""Kain"",
""dob"":""3/1/1981""
}
]
}";
static void Main(string[] args)
{
JObject jObject = JObject.Parse(JSON);
JToken mother = jObject.SelectToken("Mother");
JToken father = jObject.SelectToken("Father");
JToken siblings = jObject.SelectToken("Siblings");
Console.WriteLine("Mother: " + mother.ToString());
Console.WriteLine("Father: " + father.ToString());
Console.WriteLine("Siblings: " + siblings.ToString());
}
}
}
我将三个不同的参数传递给SelectToken
,将文档的三个不同部分选择为三个不同的JToken变量。应该注意的是,其中两个变量包含单个名称,但最后一个包含一个名称数组。
我被要求做一个任务,我需要将Mother,Father和Siblings的值全部放在一个数组中。
简而言之,我想写这样的东西:
JToken family = jObject.SelectToken("_____");
Console.WriteLine(family.ToString());
结果应为:
[
{
"name":"Eve",
"dob":"1/1/1950"
},
{
"name":"Adam",
"dob":"2/1/1950"
},
{
"name":"Abel",
"dob":"1/1/1980"
},
{
"name":"Kain",
"dob":"3/1/1981"
}
]
我可以在SelectToken
的空白处填写一个值来实现这一目标吗?我已经有一个系统,只需一次调用SelectToken
即可选择数据,因此如果我不必编写异常来进行多次调用,这将使事情变得更容易。