How to read Google AJAX Feed API results from C# code?

3.3k Views Asked by At

I want to use Goolge AJAX Feed API in my C# console application to save return feeds as C# collection so i can use this .net collcetion in my .net application.

I noticed google give a Java Access Code Snippets but I have no idea how to coding it in C#. I know there is a very good .net opensource library Json.NET we can use to read and write JSON formatted data.

Can someone give me an exmpale how to use C# and Json.NET play with Google AJAX Feed API?

Final Solution:

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);
1

There are 1 best solutions below

0
On BEST ANSWER

I've just looked at the examples, and here is how I'd go about it.

  1. Construct the feed Url (read the documentation)
  2. Use the WebClient to Download the URL as a String.
  3. Use Json.NET to reads the string.
  4. Use a for-loop to read each entries

For example, a quick untested hack:

// 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
}

If however, you want strongly-typed class, you must first make a class that "looks like" the data that is returned from the feed api first, i.e.

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

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

Then in step #3, you can use the deserializing method like this:

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

...

Hope this helps!