Newtonsoft JSON SelectToken для получения данных из нескольких частей документа JSON?
У меня есть 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. Следует отметить, что две из этих переменных содержат отдельные имена, но последняя содержит массив имен.
Меня попросили выполнить задание, в котором мне понадобятся значения для матери, отца и братьев и сестер в одном массиве.
Короче говоря, я хочу написать что-то вроде этого:
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
, так что будет намного проще, если мне не придется писать в исключение, чтобы сделать несколько вызовов.