2015-09-05 80 views
1

下面是需要被正确解析的JSON:JSON解析C#得到具体的数据

https://docs.acrcloud.com/metadata

我试图让:这首歌的

标题, 专辑名称, 艺术家。

我想是这样的:

JObject o = JObject.Parse(result);    
Console.WriteLine("Name: " + o["metadata"]["music"]); 

和它的作品,但我得到的所有数据,“音乐”我只需要提取特定的数据。

+0

然后取出您的“具体数据”! – cubrr

+0

我不知道@cubrr是如何检查JSON的,有点复杂 – user3181034

+1

那么,你已经从“元数据”中获得了“音乐”。现在重复这个过程,从“音乐”中获得“标题”。它看起来像对象是在一个数组中,尽管这样'o [“metadata”] [“music”] [0]'会让你访问实际的对象。 – cubrr

回答

1

您可以使用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é" 
    ] 
} 

这是你想要的。

+0

Tnx @dbc这个很好用! – user3181034