JSON解析C#获取特定数据

JSON解析C#获取特定数据,c#,json,C#,Json,以下是需要正确解析的JSON: 我正试图获得以下信息: 歌名,, 专辑名, 艺术家 我试着这样做: JObject o = JObject.Parse(result); Console.WriteLine("Name: " + o["metadata"]["music"]); 它可以工作,但我正在获取“音乐”中的所有数据,我只需要提取特定的数据。您可以用于此目的。它们都支持包含通配符: var o = JToken.Parse(result);

以下是需要正确解析的JSON:

我正试图获得以下信息:

歌名,, 专辑名, 艺术家

我试着这样做:

 JObject o = JObject.Parse(result);            
 Console.WriteLine("Name: " + o["metadata"]["music"]);
它可以工作,但我正在获取“音乐”中的所有数据,我只需要提取特定的数据。

您可以用于此目的。它们都支持包含通配符:

        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();
然后

印刷品


这正是您想要的。

然后取而代之的是您的“特定数据”!我不知道@cubrr如何检查JSON它有点复杂,你已经从“元数据”中得到了“音乐”。现在重复从“音乐”中获取“标题”的过程。看起来该对象位于数组中,因此
o[“metadata”][“music”][0]
将使您能够访问实际对象。
        Console.WriteLine(JsonConvert.SerializeObject(musicInfo, Formatting.Indented));
{
  "SongTitle": "Listen (From the Motion Picture \"Dreamgirls\")",
  "AlbumName": "B'Day Deluxe Edition",
  "Artists": [
    "Beyoncé"
  ]
}