2015-09-05 68 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