您可以使用SelectTokens
and SelectToken
来实现此目的。他们都支持JsonPATH query syntax包括通配符:
var o = JToken.Parse(result);
var musicInfo = o.SelectTokens("metadata.music[0]")
.Select(t => new
{
SongTitle = (string)t.SelectToken("title"),
AlbumName = (string)t.SelectToken("album.name"),
Artists = t.SelectTokens("artists[*].name").Select(n => (string)n).ToArray()
})
.FirstOrDefault();
然后
Console.WriteLine(JsonConvert.SerializeObject(musicInfo, Formatting.Indented));
打印
{
"SongTitle": "Listen (From the Motion Picture \"Dreamgirls\")",
"AlbumName": "B'Day Deluxe Edition",
"Artists": [
"Beyoncé"
]
}
这是你想要的。
来源
2015-09-06 04:04:33
dbc
然后取出您的“具体数据”! – cubrr
我不知道@cubrr是如何检查JSON的,有点复杂 – user3181034
那么,你已经从“元数据”中获得了“音乐”。现在重复这个过程,从“音乐”中获得“标题”。它看起来像对象是在一个数组中,尽管这样'o [“metadata”] [“music”] [0]'会让你访问实际的对象。 – cubrr