2013-07-01 55 views
0

由於WP不支持Youtube API,因此我選擇使用JSON響應。似乎Youtube已經改變了JSON-C的響應類型,我怎麼解析這個?如何在.net中解析JSON-C

https://www.googleapis.com/youtube/v3/search?part=snippet&order=relevance&q=lil+b&key=AIzaSyACjwJrIBICZxPb1x3JRq-FQ8iaei7LqXA&alt=json

我試過Newtonsoft JSON,但它不支持,要麼,有什麼建議?謝謝!

+0

JSON-C只是JSON。任何JSON解析器都應該完美工作。 –

+0

這是我得到的錯誤: 因爲類型需要一個JSON數組(例如[1,2,3,4, 2,3])來正確地反序列化。 要修復此錯誤,請將JSON更改爲JSON數組(例如[1,2,3])或更改反序列化類型,以使其成爲正常的.NET類型(例如,不是像整數這樣的基本類型,也不是集合類型如數組或列表),可以從JSON對象反序列化。 JsonObjectAttribute也可以添加到類型中,以強制它從JSON對象反序列化。 – KPS

回答

0

你可以試試下面的代碼。我已將json數據保存爲文本文件。使用jsonCsharp你可以生成模型類。 http://json2csharp.com/

var json = System.IO.File.ReadAllText(@"C:\json.txt"); //get json data 
var result = JsonConvert.DeserializeObject<RootObject>(json); 

public class PageInfo 
{ 
    public int totalResults { get; set; } 
    public int resultsPerPage { get; set; } 
} 

public class Id 
{ 
    public string kind { get; set; } 
    public string channelId { get; set; } 
    public string videoId { get; set; } 
} 

public class Default 
{ 
    public string url { get; set; } 
} 

public class Medium 
{ 
    public string url { get; set; } 
} 

public class High 
{ 
    public string url { get; set; } 
} 

public class Thumbnails 
{ 
    public Default @default { get; set; } 
    public Medium medium { get; set; } 
    public High high { get; set; } 
} 

public class Snippet 
{ 
    public string publishedAt { get; set; } 
    public string channelId { get; set; } 
    public string title { get; set; } 
    public string description { get; set; } 
    public Thumbnails thumbnails { get; set; } 
    public string channelTitle { get; set; } 
} 

public class Item 
{ 
    public string kind { get; set; } 
    public string etag { get; set; } 
    public Id id { get; set; } 
    public Snippet snippet { get; set; } 
} 

public class RootObject 
{ 
    public string kind { get; set; } 
    public string etag { get; set; } 
    public PageInfo pageInfo { get; set; } 
    public string nextPageToken { get; set; } 
    public List<Item> items { get; set; } 
}