2009-09-05 8 views
3

Je veux utiliser Goolge AJAX Feed API dans mon application console C# pour enregistrer les flux de retour en tant que collection C# afin que je puisse utiliser cette collection .net dans mon application .net.Comment lire les résultats de l'API Google AJAX Feed à partir du code C#?

J'ai remarqué que google donnait des extraits de code d'accès Java mais je ne sais pas comment coder en C#. Je sais qu'il existe une très bonne bibliothèque .net opensource Json.NET que nous pouvons utiliser pour lire et écrire des données au format JSON.

Quelqu'un peut-il me donner un exmpale comment utiliser C# et Json.NET jouer avec Google AJAX Feed API?

Solution finale:

public class FeedApiResult 
{ 
    public ResponseData responseData { get; set; } 
    public string responseDetails { get; set; } 
    public string responseStatus { get; set; } 
} 

public class ResponseData 
{ 
    public Feed feed { get; set; } 
} 

public class Feed 
{ 
    public string title { get; set; } 
    public string link { get; set; } 
    public string author { get; set; } 
    public string description { get; set; } 
    public string type { get; set; } 
    public List<Entry> entries { get; set; } 
} 

public class Entry 
{ 
    public string title { get; set; } 
    public string link { get; set; } 
    public string author { get; set; } 
    public string publishedDate { get; set; } 
    public string contentSnippet { get; set; } 
    public string content { get; set; } 

} 

var url = "http://ajax.googleapis.com/ajax/services/feed/load?q=http%3A%2F%2Fwww.digg.com%2Frss%2Findex.xml&v=1.0"; 
var wc = new WebClient(); 
var rawFeedData = wc.DownloadString(url); 

//You can use System.Web.Script.Serialization if you don't want to use Json.NET 
JavaScriptSerializer ser = new JavaScriptSerializer(); 
FeedApiResult foo = ser.Deserialize<FeedApiResult>(rawFeedData); 

//Json.NET also return you the same strong typed object  
var apiResult = JsonConvert.DeserializeObject<FeedApiResult>(rawFeedData); 

Répondre

4

J'ai juste regardé les exemples, et voici comment je vais parler.

  1. Construct l'URL du flux (lire la documentation)
  2. Utilisez le WebClient-Download the URL as a String.
  3. Utilisez Json.NET pour lire la chaîne.
  4. Utilisez une boucle for pour lire chaque entrée

Par exemple, un hack non testé rapide:

// 1. 
var url = "'http://ajax.googleapis.com/ajax/services/feed/load?q=http%3A%2F%2Fwww.digg.com%2Frss%2Findex.xml&v=1.0"; 

// 2. 
var wc = new WebClient(); 
var rawFeedData = wc.DownloadString(url); 

// 3. 
var feedContent = JObject.Parse(rawFeedData); 

// ... 
var entries = feedContent["entries"]; 

for (int i = 0; i < entries.Length; i++) { 
    var entry = entries[i]; 

    // insert entry into your desired collection 
} 

Cependant, si vous voulez la classe fortement typée, vous devez d'abord faire une classe « ressemble à » les données renvoyées par l'api d'alimentation en premier lieu, à savoir

public class FeedApiResult { 
    public FeedApiFeedObj responseData { get; set; } 
    // snip ... 
} 

public class FeedApiFeedObj { 
    public string title { get; set; } 
    public string link { get; set; } 
    // snip ... 
} 

ensuite à l'étape 3, vous pouvez utiliser la méthode de désérialisation comme ceci:

var apiResult = JsonConvert.DeserializeObject<FeedApiResult>(feedContent) 

...

Hope this helps!

+0

Merci Chakrit, je vais tester votre code très bientôt. – CodeYun

Questions connexes