REST search with JSON client library

I need to connect to an endpoint that serves JSON through REST interfaces. I cannot find anything that combines these 2 technologies in a consistent manner.

I am looking for a library that will allow me to get started quickly.

+7
source share
4 answers

You can use Json.Net and this extension class that uses DynamicObject

Some examples of use:

 public static void GoogleGeoCode(string address) { string url = "http://maps.googleapis.com/maps/api/geocode/json?sensor=true&address="; dynamic googleResults = new Uri(url + address).GetDynamicJsonObject(); foreach (var result in googleResults.results) { Console.WriteLine("[" + result.geometry.location.lat + "," + result.geometry.location.lng + "] " + result.formatted_address); } } public static void GoogleSearch(string keyword) { string url = "http://ajax.googleapis.com/ajax/services/search/web?v=1.0&rsz=8&q="; dynamic googleResults = new Uri(url + keyword).GetDynamicJsonObject(); foreach (var result in googleResults.responseData.results) { Console.WriteLine( result.titleNoFormatting + "\n" + result.content + "\n" + result.unescapedUrl + "\n"); } } public static void Twitter(string screenName) { string url = "https://api.twitter.com/1/users/lookup.json?screen_name=" + screenName; dynamic result = new Uri(url).GetDynamicJsonObject(); foreach (var entry in result) { Console.WriteLine(entry.name + " " + entry.status.created_at); } } public static void Wikipedia(string query) { string url = "http://en.wikipedia.org/w/api.php?action=opensearch&search=" + query +"&format=json"; dynamic result = new Uri(url).GetDynamicJsonObject(); Console.WriteLine("QUESTION: " + result[0]); foreach (var entry in result[1]) { Console.WriteLine("ANSWER: " + entry); } } 

EDIT:

Here is another sample without DynamicObject

 public static void GoogleSearch2(string keyword) { string url = "http://ajax.googleapis.com/ajax/services/search/web?v=1.0&rsz=8&q="+keyword; using(WebClient wc = new WebClient()) { wc.Encoding = System.Text.Encoding.UTF8; wc.Headers["User-Agent"] = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET4.0C; .NET4.0E)"; string jsonStr = wc.DownloadString(url); JObject jObject = (JObject)JsonConvert.DeserializeObject(jsonStr); foreach (JObject result in jObject["responseData"]["results"]) { Console.WriteLine( result["titleNoFormatting"] + "\n" + result["content"] + "\n" + result["unescapedUrl"] + "\n"); } } } 
+8
source

I would look at RestSharp . It is very straight forward to get up and work, and has an active move.

Getting Started Guide: https://github.com/restsharp/RestSharp/wiki

Deserialization: https://github.com/restsharp/RestSharp/wiki/Deserialization

+4
source

The HttpCLient and JSONValue type from the WCF web API should help you. Download the source code and look at the samples. There are many examples for working with JSON on the client. http://wcf.codeplex.com/releases

Also see

http://blog.alexonasp.net/

+1
source

ServiceStack.Text is probably one of the easiest ways to do this.

Background : ServiceStack.Text is an independent dependency-free serialization library library that contains ServiceStack text processing functionality

Example

 using ServiceStack.Text; // Create our arguments object: object args = new { your = "Some", properties = "Other", here = "Value", }; var resultString = fullUrl.PostJsonToUrl(args); results = resultString.Trim().FromJson<T>(); 

Extension methods PostJsonToUrl and FromJson are, in my opinion, good syntactic sugar.

+1
source

All Articles